Commit Graph

272 Commits

Author SHA1 Message Date
Jellyfrog
2fc3a21211 Apply fixes from StyleCI (#12121) 2020-09-21 15:43:38 +02:00
Tony Murray
b9f4b221f7 Include ifName for bad_ifXEntry OS (#12104)
* ifEntry does not include ifName

* Walk ifName for bad_ifXEntry os
2020-09-17 23:00:31 -05:00
craig-nokia
db7ac390b2 Added check for incorrect ifConnectorPresent truth values, if invalid… (#11634)
* Added check for incorrect ifConnectorPresent truth values, if invalid, save it as false

* Added space after comma line 629

* Update ports.inc.php

Updated per murrant and tested.

* Update ports.inc.php

* Update ports.inc.php

Changed to check if ifConnector is set and if the response is not true or false, set it to null.

* Update ports.inc.php

* Update ports.inc.php

Fixed the codeclimate space issue

* Update test data

* fix differing escapes

* fix ciena-sds eol

* Revert timos.json

Co-authored-by: Tony Murray <murraytony@gmail.com>
2020-07-08 08:44:45 -05:00
Nick Peelman
e4b2d98222 only try to optimize port polling when it is enable by the global setting. (#11908) 2020-07-06 19:31:45 -05:00
footstep86
031c644ab3 Implemented a generic approach for ifHighSpeed values that cannot be … (#11504)
* Implemented a generic approach for ifHighSpeed values that cannot be stored in the database

Typo

* Added os check
2020-06-12 07:45:00 -05:00
Albert Siersema
cd362b7983 Fix missing PoE port graphs for Cisco Catalyst 9K (#11698)
* Fix missing PoE port graphs for Cisco Catalyst 9K

* Reworked code: 2 assignments, added tests

* Simplify code

Checking the MIBs...
CISCO-POWER-ETHERNET-EXT-MIB: AUGMENTS { pethPsePortEntry  } 
POWER-ETHERNET-MIB: INDEX { pethPsePortGroupIndex , pethPsePortIndex  }

This means cpeExtPsePortEntry is always indexed by exactly 2 values.  No point in populating slot.subslot.port

Co-authored-by: Tony Murray <murraytony@gmail.com>
2020-06-04 22:10:06 -05:00
SourceDoctor
fc921a143c Cleanup unused code (#11391)
* Global Settings - Alert Default Settings

* Revert "Global Settings - Alert Default Settings"

This reverts commit a1af62b146.

* remove not more used code

* Travis restart
2020-04-08 15:56:44 -05:00
Tony Murray
217969e140 Update php-codesniffer (#11368)
* PHPCS 3.5+

* Fix newly detected style issues
2020-04-03 08:41:24 -05:00
SourceDoctor
7dfb4ef1df Adding Column ifSpeed_prev, ifHighSpeed_prev to Ports Table (#11348)
* adding Column ifSpeed_prev, ifHighSpeed_prev to Ports table

* grammar fix

* rename migration class

* tests

* .

* .
2020-04-01 10:50:33 +02:00
Tony Murray
df16de9d2f Refactor Datastores to allow future improvements. OpenTSDB Tags. (#11283)
* Datastores to object oriented code, using the Laravel IoC container

Change instantiation
better DI
move OpenTSDB

Small re-orgs

remove unused stuff

Fix graphs and other scripts

Use DI for all except rrd

fix up connection error handling

Add tests, fix up a "few" things
Add Config::forget()

Style fixes

Don't reference legacy code

remove accidental code paste

Add datastores phpunit groups

some tests

* rebase fixes

* some test fixes

* shorter tests

* shorter tests

* Don't except when rrdtool can't be started.

* restore tests

* fix rrd tests

* fix iterable change upstream

* fix isValidDataset

* fix invalid data bug

* fix mysql incorrect ds

* fix issue with data that is too long

* use regular data_update()

* Use log facade

* OpenTSDB mis-ordered arguments fix

* Making a singleton with different options makes different singletons.  Just use the global config settings to disable datastores.

* only filter tags for datastores that won't it don't modify the tags permanently

* Update copyrights to include original authors.

* Stats for all datastores

* Fix mysql sends different rrd / other ds names

* fix snmp last stats not initialized
remove unused function

* remove unused function and move single use function closer to its use

* InfluxDB does not need to update null or U values.
Skip write if all fields are empty

* Fix smart value checks

* fix style issues

* Make sure port data is stored the same way as before for Graphite and OpenTSDB
Add ifIndex tag to all to be compatible

* Missed rrdtool_tune() call

* Test update WIP

* OpenTSDB now includes tags

* fix style
2020-03-16 09:17:58 -05:00
Tony Murray
7fe895bd08 Revert "Refactor datastores to classes (#9179)" (#11273)
This reverts commit e5dad7a64e.
2020-03-11 07:52:52 -05:00
Tony Murray
e5dad7a64e Refactor datastores to classes (#9179)
* Datastores to object oriented code, using the Laravel IoC container

Change instantiation
better DI
move OpenTSDB

Small re-orgs

remove unused stuff

Fix graphs and other scripts

Use DI for all except rrd

fix up connection error handling

Add tests, fix up a "few" things
Add Config::forget()

Style fixes

Don't reference legacy code

remove accidental code paste

Add datastores phpunit groups

some tests

* rebase fixes

* some test fixes

* shorter tests

* shorter tests

* Don't except when rrdtool can't be started.

* restore tests

* fix rrd tests

* fix iterable change upstream

* fix isValidDataset

* fix invalid data bug

* fix mysql incorrect ds

* fix issue with data that is too long

* use regular data_update()

* Use log facade

* OpenTSDB mis-ordered arguments fix

* Making a singleton with different options makes different singletons.  Just use the global config settings to disable datastores.

* only filter tags for datastores that won't it don't modify the tags permanently

* Update copyrights to include original authors.

* Stats for all datastores

* Fix mysql sends different rrd / other ds names

* fix snmp last stats not initialized
remove unused function

* remove unused function and move single use function closer to its use

* InfluxDB does not need to update null or U values.
Skip write if all fields are empty

* Fix smart value checks

* fix style issues
2020-03-10 19:08:00 -05:00
Albert Siersema
398d5fe2b7 Fixed missing PoE graphs for Cisco devices (#11087)
* Fixed missing PoE graphs for Cisco devices where portIfIndex can't be retrieved from CISCO-STACK-MIB

* Codeclimate & Travis error corrections

Co-authored-by: PipoCanaja <38363551+PipoCanaja@users.noreply.github.com>
2020-02-01 11:01:36 +01:00
Tony Murray
67b28ec4cd Fix Air Fiber port stats (#11079)
* Fix Air Fiber port stats
Define OS port polling includes in a standard way.
Move Air Fiber code to os port polling include.

* Update snmp data

* fix accidental change

* Some formatting fixes

* should be null
2020-01-30 05:40:58 -06:00
PipoCanaja
ee8297df19 Extend FS switches support, handle lowerLayerDown ifOperStatus (#10904)
* extend FS switches support

* MIB compilation

* HW and Ver

* sensors and CPU

* tests

* correct version

* try to handle properly "down" as not up, for OperStat like lowerLayerDown

* try to handle properly "down" as not up, for OperStat like lowerLayerDown

* try to handle properly "down" as not up, for OperStat like lowerLayerDown

* try to replace "down" with "not up" :)

* fix other ifOperStatus checks
2020-01-15 08:28:36 -06:00
louis-oui
891d6966d8 Optimize DB update of ports and ports_statistics tables when polling (#10792)
* Don't update ports stats in database when their ifOperStatus is down and their ifLastChange did change

* Don't update ports stats in database when their ifOperStatus is down and their ifLastChange did change

* Don't update ports stats in database when their ifOperStatus is down and their ifLastChange did change

* Update the poll_time, poll_prev and poll_period of all ports in an unique request per device

* Update the poll_time, poll_prev and poll_period of all ports in an unique request per device

* echo debug

* max array_column

* remove print_r for debug

* optimize update of poll_time, poll_prev and poll_period

* optimize update of poll_time, poll_prev and poll_period

* better code readibility
2020-01-10 10:03:32 -06:00
PipoCanaja
b89d80dc02 Perf optimisation for xDSL mib polling (#10815)
Only call snmpwalk once, instead of 20, to avoid havin to face up to 20 times the timeout. Decreased drastically polling time on some Cisco 887 / 897 devices
2019-11-14 18:39:47 +00:00
Erik
a5f53eee2a Brocade switches - Added names on fiberchannel ports (#10737)
* Added brocade ports

* Create brocade.inc.php

* Update functions.php

* Update functions.php

* Update brocade.inc.php

* Try to remove complexity

* Removed white space

Removed white space

* Added testdata

* removed temp variable

* Update functions.php

* Create brocade.inc.php

* Added fill ifAlias for fibrechannel ports

* Update functions.php

* Update brocade.inc.php

* Update fabos.json
2019-11-13 14:29:30 +00:00
pobradovic08
7f32af4f7b Add CISCO-IF-EXTENSION port stats for IOS/IOS-XE (#10644)
* Add CISCO-IF-EXTENSION polling and graph

* Added test data

* Code style

* Move CISCO-IF-EXTENSION-MIB to cisco mib dir

* Test data?

* Recollect test data again

* ios-xe variant 'ports' with ports test data

* Removed unnecessary test data
2019-10-21 00:39:14 +00:00
Tony Murray
699aa8a042 Consolidate configuration settings and implement dynamic webui settings (#9809)
* initial db/defaults dump

* numeric values

* Remove $config['time']

* Use config_definitions.json

* try setting definition as a complete array

* a little more

* fix format

* WIP converting dynamic setting pages

* rewriting the webui

* remove legacy and add translations

* finish email section

* improve navigation
update js a bit

* Import the remaining existing settings

* Update backend still some wip
migration

* fix config loading (db not overriding defaults)

* some cleanup

* more array collapsing

* update settings

* Settings search

* add purge settings to ui, order groups and sections

* collapse more arrays

* Auth definitions WIP

* remove needless slash escapes

* add warning to json

* moving settings from defaults.inc

* remove slow_statistics

* Move rrdtool settings to the poller section

* Use translations more consistently

* removing more settings from defaults.inc.php

* show setting name in tooltip

* allow help text to be shown on mobile

* disable settings that are set in config.php

* Implement undo and reset to default.

* Vue.js functional

* Vue.js WIP

* Implement tabs component

* accordion WIP

* lodash ver update

* two items

* Accordion somewhat working

* hash navigation

* Refine Accordion

* Fix up tab styling a bit

* Cleaner tab selected property
Hide html while loading

* spinner?

* Icon support
property for accordion to active

* WIP

* Tabs/Sections from ajax

* Setting Component skeletons

* Dynamic Component resolution

* Basic functionality

* toggle class

* Refactor components

* translate tabs and accordions

* simple array attempt

* improve readonly tooltip

* array styling

* array value editing

* organize snmp info

* Handle initial tab/section in url

* Use Laravel to parse tab/section, dump old

* Draggable array entries

* v-tooltip, for clickable (and touch) help tooltips
disable draggable

* Navigation WIP

* Navigation WIP

* groups computed

* filter settings

* fix event reference

* vue.js i18n initial

* missing description = just setting name

* en fallback

* tidy up the language support and js generation

* persist value to db

* fix issue with 0

* Delete settings from DB instead of setting them to default

* ldap-groups
fixup style

* Default dashboard selection

* fix array of options instead of object

* allow custom validation for settings

* translate options in SettingSelect

* SNMP v3 WIP

* fix setting arrays

* Split persist out of set

* Hook up events for SNMP v3 Auth
correct Config::persist behaviour with arrays

* dependent settings (primitive for now)
actually update the settings values in the LibrenmsSettings component

* more complex "when" behaviour

* remove un-needed seeder

* add poller_modules.cisco-qfp

* remove en.json (disable warning)

* don't set default for log_dir or log_file, otherwise it won't be processed correctly

* Fix module order
add some missing settings

* more config corrections

* correct graphs
correct loading values set to null (although it should have no difference)
remove project_name_version

* Add nfsen settings.  Docs are very confusing, so might have flubbed something
remove option for array definition of select option as numeric indexes messes it up

* Correct more upstream config differences

* Config cleanup after a bunch of merges.

* Fixes

* add version tags to js/css files
remove old js

* Print out full settings list read-only

* Add http_proxy setting
fix indents in config_definitions.json

* repeaters default is 0 (aka 20)

* cleanups

* rewrite the dynamic config docs

* add language docs

* Don't show snmp v3 auth add/remove if disabled by config.php
2019-10-16 21:22:05 +00:00
Stephen Fletcher
c666af1b8b Added inbit and outbit rate to auxiliary datastores. (#10512) 2019-09-02 23:03:20 +02:00
Tony Murray
f3ba8947f7 Use Config helper (#10339)
remove usage of global variable
2019-06-23 00:29:12 -05:00
PipoCanaja
ccb6e2e614 Removed broken POE graphing code (#10188)
* remove broken POE graphing code

* remove broken POE graphing code

* add missing iosxe condition
2019-05-29 13:37:00 -05:00
PipoCanaja
36e709ebab Improved Linksys support, including POE (#10075)
Fixes #9718 

This PR adds POE graphs, even if not all the values that are polled on other OSes are available on this one.  

DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [X] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 10075`
After you are done testing, you can remove the changes with `./scripts/github-remove`.  If there are schema changes, you can ask on discord how to revert.
2019-04-09 20:32:57 +01:00
Ruslan
019c57beaa Add Junos VirtuallChassis ports polling (#9879)
* Update ports.inc.php

* Create junos-vcp.inc.php

* Fix some formatting errors in junos-vcp.inc.php

* Update junos_ex.snmprec

* Update junos_ex.json

* Update tests/data/junos_ex.jso

* Rollback junos_ex data set

* Update ports.inc.php

* Update junos-vcp.inc.php~

* Update tests/snmpsim/junos.snmprec

* Generate new .json files

* Update includes/polling/ports.inc.php

* Rollback tests/data/junos_ex.json

* Update junos.snmprec

* Update junos.snmprec

* Use str_pad in junos-vcp.inc.php
2019-03-12 09:01:35 -05:00
Nick Hilliard
09caced7ef Add support for Infinera-Coriant Groove (#9843)
* Add support for Infinera Groove
2019-03-04 17:31:53 +01:00
Vitali Kari
d60a0da7de Add support for Nokia ISAM (#9793)
* add mibs,first commit

* adds support for Nokia ISAM Plattform

* remove some comments

* change os polling to multi oid

* Restore file headers

* Fix discovery by sysObjectID

* first deactivate checks against IHUB (timos), It not necessary so long we can not provide more thatn one snmp community per device

* move snmp state and temperature from pre-cache

* Update os_schema.json
2019-02-12 20:23:02 -06:00
Erik
a6451860fc Fix if discover (#9643)
* fix_if_discover

* Update ports.inc.php

* Fixed overwriting IfDescr and IfAlias overwriting

* removed whitespace

* added ifname, ifalias and ifdescr copy if it is emtpy or null

* removed ifAlias from update to prevent overwrite

* removed ifName and ifDescr from update to prevent overwrite

* added is_port_valid before doing copy actions between ifDescr,ifAlias&ifName also added back ifDescr&ifName update

* Update ports.inc.php

* Update functions.php

* Update ports.inc.php

* Update exa_e7-2.json

* Update fortigate.json
2019-01-19 11:48:30 -06:00
Vitali Kari
272e511964 Nokia vrf (#9509)
* update some mibs

* add virtual router ports

* coding style

* refactor

* some refactoring

* some typos

* add snmprec

* Fix capturing VRF entries with no ports

* updated test data

* manually fix test data

Not going to try to fix the data capture for backslashes at this time.

* Revert "manually fix test data"

This reverts commit 2c98450706.

* timos data for net-snmp 5.7.3 ?????
2018-12-20 16:04:24 -06:00
evheros
d7a04f8cb7 Added Fortigate state sensors (#9520)
* Added Fortigate state sensors

* Added snmprec file

* Update fortigate.json

* Fix "awesome" ifHighSpeed implementation...

* Update fortigate.json

* better MAX_INT ifHighSpeed fix

* update for new ifType changes

* ifDescr is not used correctly like most fortinets
2018-12-11 22:18:46 -06:00
PipoCanaja
b67634bc5a Fixed ifType being removed when a port is down (#9493)
* Adding ifType to base_oids

* Improve discovery (update ifType) and polling (save ifType)

* Updated test data

* Updated json test data

* vlan isn't filtered by default :P

* With default ignored ports

* Update newer test data
2018-12-11 21:07:56 -06:00
Tony Murray
533c9022c9 Fixed Procera ports ifIndex and ports added by the poller (#9384)
DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
After you are done testing, you can remove the changes with `./scripts/github-remove`.  If there are schema changes, you can ask on discord how to revert.
2018-11-28 21:08:42 +00:00
Neil Lathwood
a10503b927 Ensure the checks for ASA context devices are strict (#9441) 2018-11-10 21:05:25 +00:00
PipoCanaja
e367f46fee device: Initial support for CXR-Networks Terminal Server (#9169)
* device: Initial support for CXR-Networks Terminal Server

* device: Support for CXR-Networks Terminal Server - CodeClimate + cleaning

* device: renamed cxr-networks-ts and code improvement

* device: cxr-networks-ts test data

* device: renamed os as cxr-ts

* device: renamed os as cxr-ts, test data
2018-09-10 21:32:06 -05:00
Neil Lathwood
23b46c7681 Improved port polling in certain scenarios (#9082)
* Improved port polling in certain scenarios

* Update ports.inc.php

* Update ports.inc.php

* Remove temporary variables
2018-08-28 10:29:28 -05:00
Tony Murray
e5fb7c9f16 Selective Port polling improvements (#8650)
Don't delete skipped ports when using selected polling
Improve output of port polling module.
Update ifOperStatus and ifAdminStatus even when skipping.

Warning! causes a semantic change where ifAdminStatus_prev and ifOperStatus_prev are updated every poll, so they will only be mismatched for one poll.  This could cause alerts to behave differently.

Add an optimization if less than 10% of the ports are disabled (or less than 5), walk the base oids.
Time improvement on test device Full: 12s, Selective: 8s, Optimized 4s. (no disabled ports on device, many down)

Another test device.

![image](https://user-images.githubusercontent.com/39462/40066671-46cdc956-582a-11e8-928a-80bbd81dd423.png)


DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [ ] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
2018-08-04 22:10:57 +01:00
Tony Murray
eeb3d58f5b Improved Logging and Debugging (#8870)
Use Log facility when Laravel is booted.
Update init.php so we can easily boot Laravel for CLI scripts. (and just Eloquent, but that may go away)
Move all debug setup into set_debug() function and use that across all scripts.
Log Laravel database queries.
Send debug output to librenms log file when enabling debug in the webui.
Allow for colorized Log CLI output. (currently will leave % tags in log file output)

** Needs testing and perhaps tweaking still.

DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
2018-07-13 23:08:00 +01:00
Paul Heinrichs
f22e1a6ba6 Improved support for cambium cmm and added cmm4 (#8737)
- Added port discovery for cmm3 (not available for cmm4, not that i could find)
- Added discovery for cmm4
- Added Power port cmm4
- Removed Processor bug by disabling processor on device.

I am unable to test CMM4 and may need someone to do so or review for possible errors.

Fixes Issues #8732, #8731

DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [x] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
2018-07-07 13:56:54 +01:00
RobJE
82d01eb1a1 feature: Include adsl stats for vdsl ports (#8670)
* also include adsl stats for vdsl ports

* Update ports.inc.php
2018-05-21 19:33:57 +01:00
PipoCanaja
33589b7478 Optimisation - VRP - Only fetch the necessary OIDs for POE polling (#8744)
Hello

For VRP devices supporting POE, the goal is to fetch only the strict necessary values instead of all the table to improve the polling time (devices tested, 5720, are quite slow to return SNMP values).

Test Data is unchanged. 

Bye
PipoCanaja

DO NOT DELETE THIS TEXT

#### Please note

> Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting.

- [X] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926`
2018-05-20 14:45:29 +01:00
PipoCanaja
a1a13de0f6 feature: Added PoE graphs and improved PoE polling code (#8705)
* Poe Polling Code, Poe Graphs, and Huawei MIB

* Reverting the reindent done after pre-commit script

* Cleaning of code not used for Cisco IOS, removal of untested Procurve code, and restore of legacy generic code (tested with Cisco+huawei)

* Rename MIB file

* Rearranged duplicated code

* Cleaning of variable not used

* Cleaning of commented code after night validation in test environnement

* Cleaning after pre-commit.php comments

* test data with PoE oids for huawei 5720

* test data with PoE oids for cisco 2960X
2018-05-15 21:39:36 +01:00
cchance27
09d6b2fd54 feature: Added Prometheus PushGateway metric support (#8437)
* Added Prometheus PushGateway support

* fixed formatting

* fix set_curl_proxy to correct variable

* add documentation

* Update Metric-Storage.md

* Update mkdocs.yml
2018-04-13 15:46:19 +01:00
papatango71
7ed7885ca7 Add ifAlias to tag influxdb port data (#8461)
* Update ports.inc.php

Adding ifAlias to the $tags that are sent into influxdb

* Remove space
2018-03-23 12:43:50 -05:00
Neil Lathwood
faf48311b2 refactor: Small improvement to per port polling (#8431) 2018-03-22 13:40:11 -05:00
Michael Renner
b5273969a0 feature: Fetch ifAlias data for devices on the bad_ifXEntry list (#8275)
* fetch ifAlias data for devices on the bad_ifXEntry list

* add test data for SG350-10
2018-02-27 16:57:24 +00:00
Neil Lathwood
92f83c2567 fix: Validate ifHighSpeed is > 0 in selected port polling (#7885) 2017-12-11 15:51:29 -06:00
Zmegolaz
e31b884cc9 Feature: selected_ports per OS. Fixed layout of example MySQL table. (#7674)
* selected_ports per OS. Fixed layout of example MySQL table.

* Better table markdown.
2017-11-09 12:57:00 +00:00
Daniel Preussker
0cf8c2615f fix: Update ifIndex update on polling when ifIndex is not the port association mode (#7574) (#7575) 2017-10-30 19:44:01 +00:00
Paul Heinrichs
f038bcb6a1 device: Add more Procera interfaces (#7422)
* Add procera MIBS

* Add Channel ports to procera

* Fix whitespace

* CI Fix

* Remove unnecessary procera mib_dir

* Use snmpwalk_group

* CI fix

* Add more fields and change depth to snmpgroup_walk

* Minor style updates

* Add interface regex to procera.yaml
2017-10-19 08:09:45 -05:00
Lorenzo Zafra
f66d73de89 refactor: Use ifName if ifDescr is blank
* Add if statement for ROS os when querying remote port id for LLDP map

* Apply ifDescr fix in ports polling instead.
2017-07-29 12:09:15 +01:00