tonyseek / openvpn-status

Parse OpenVPN status logs in Python
https://openvpn-status.readthedocs.io
MIT License
83 stars 31 forks source link

Badly formatted time throws ValueError #11

Closed dset0x closed 5 years ago

dset0x commented 5 years ago

Hello!

I have the misfortune of sometimes being served incomplete status files, which openvpn-status will of course fail to parse. It usually throws ParsingError, but I ran into a case where it does not:

  File "/home/user/.pyenv/versions/3.6.6/envs/a/a/b/models.py", line 217, in load
    ovpn_status, tz = self._ovpn_status
  File "/home/user/.pyenv/versions/3.6.6/envs/a/a/b/models.py", line 188, in _ovpn_status
    status = parse_status(remote_status_file.read())
  File "/home/user/.pyenv/versions/3.6.6/envs/a/lib/python3.6/site-packages/openvpn_status/shortcuts.py", line 18, in parse_status
    return parser.parse()
  File "/home/user/.pyenv/versions/3.6.6/envs/a/lib/python3.6/site-packages/openvpn_status/parser.py", line 92, in parse
    for r in self._parse_fields(Routing, Status.global_stats.label)})
  File "/home/user/.pyenv/versions/3.6.6/envs/a/lib/python3.6/site-packages/openvpn_status/parser.py", line 90, in <dictcomp>
    status.routing_table.update({
  File "/home/user/.pyenv/versions/3.6.6/envs/a/lib/python3.6/site-packages/openvpn_status/parser.py", line 123, in _parse_fields
    setattr(instance, name, value)
  File "/home/user/.pyenv/versions/3.6.6/envs/a/lib/python3.6/site-packages/openvpn_status/descriptors.py", line 30, in __set__
    value = self.input_type(value)
  File "/home/user/.pyenv/versions/3.6.6/envs/a/lib/python3.6/site-packages/openvpn_status/utils.py", line 23, in parse_time
    return datetime.datetime.strptime(time, DATETIME_FORMAT_OPENVPN)
  File "/home/user/.pyenv/versions/3.6.6/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "/home/user/.pyenv/versions/3.6.6/lib/python3.6/_strptime.py", line 362, in _strptime
    (data_string, format))
ValueError: time data 'Wed Feb 20 21:' does not match format '%a %b %d %H:%M:%S %Y'