host.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import json
  4. from flask import Blueprint, request
  5. import jimit as ji
  6. from models import Database as db
  7. from models import Utils, Rules
  8. from models.initialize import app
  9. __author__ = 'James Iter'
  10. __date__ = '2017/5/30'
  11. __contact__ = 'james.iter.cn@gmail.com'
  12. __copyright__ = '(c) 2017 by James Iter.'
  13. blueprint = Blueprint(
  14. 'host',
  15. __name__,
  16. url_prefix='/api/host'
  17. )
  18. blueprints = Blueprint(
  19. 'hosts',
  20. __name__,
  21. url_prefix='/api/hosts'
  22. )
  23. @Utils.dumps2response
  24. def r_get(ids):
  25. args_rules = [
  26. Rules.IDS.value
  27. ]
  28. try:
  29. ji.Check.previewing(args_rules, {args_rules[0][1]: ids})
  30. ret = dict()
  31. ret['state'] = ji.Common.exchange_state(20000)
  32. ret['data'] = list()
  33. if -1 == ids.find(','):
  34. _id = ids
  35. if db.r.hexists(app.config['hosts_info'], _id):
  36. ret['data'] = {_id: json.loads(db.r.hget(app.config['hosts_info'], _id))}
  37. else:
  38. for _id in ids.split(','):
  39. if db.r.hexists(app.config['hosts_info'], _id):
  40. ret['data'].append({_id: json.loads(db.r.hget(app.config['hosts_info'], _id))})
  41. return ret
  42. except ji.PreviewingError, e:
  43. return json.loads(e.message)
  44. @Utils.dumps2response
  45. def r_get_by_filter():
  46. try:
  47. ret = dict()
  48. ret['state'] = ji.Common.exchange_state(20000)
  49. ret['data'] = list()
  50. for k, v in db.r.hgetall(app.config['hosts_info']).items():
  51. ret['data'].append({k: json.loads(v)})
  52. return ret
  53. except ji.PreviewingError, e:
  54. return json.loads(e.message)
  55. @Utils.dumps2response
  56. def r_content_search():
  57. keyword = request.args.get('keyword', '')
  58. args_rules = [
  59. Rules.KEYWORD.value
  60. ]
  61. try:
  62. ji.Check.previewing(args_rules, {'keyword': keyword})
  63. ret = dict()
  64. ret['state'] = ji.Common.exchange_state(20000)
  65. ret['data'] = list()
  66. for k, v in db.r.hgetall(app.config['hosts_info']).items():
  67. v = json.loads(v)
  68. if -1 != v['hostname'].find(keyword):
  69. ret['data'].append({k: v})
  70. return ret
  71. except ji.PreviewingError, e:
  72. return json.loads(e.message)