forked from EmpireProject/Empire
-
-
Notifications
You must be signed in to change notification settings - Fork 682
Expand file tree
/
Copy pathempire.py
More file actions
56 lines (47 loc) · 1.93 KB
/
empire.py
File metadata and controls
56 lines (47 loc) · 1.93 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#! /usr/bin/env python3
import logging
import sys
from empire import arguments
from empire.server.common import empire
from empire.server.core.config import config_manager
from empire.server.core.config.data_manager import (
sync_empire_compiler,
sync_plugin_registry,
sync_starkiller,
)
from empire.server.core.db import base
from empire.server.core.db.base import SessionLocal
from empire.server.core.exceptions import PluginValidationException
from empire.server.server import run
log = logging.getLogger(__name__)
if __name__ == "__main__":
args = arguments.args
if args.subparser_name == "server":
run(args)
if args.subparser_name == "setup":
sync_starkiller(config_manager.empire_config.starkiller)
sync_empire_compiler(config_manager.empire_config.empire_compiler)
for registry in config_manager.empire_config.plugin_marketplace.registries:
sync_plugin_registry(registry)
auto_install = config_manager.empire_config.plugin_marketplace.auto_install
if auto_install:
base.startup_db()
main = empire.MainMenu(args=args)
with SessionLocal.begin() as db:
for entry in auto_install:
try:
main.pluginregistriesv2.install_plugin(
db, entry.name, entry.version, entry.registry
)
log.info(
f"Auto-install: plugin '{entry.name}' v{entry.version} installed"
)
except PluginValidationException as e:
log.info(f"Auto-install: skipping '{entry.name}': {e}")
except Exception:
log.error(
f"Auto-install: failed to install '{entry.name}'",
exc_info=True,
)
main.shutdown()
sys.exit(0)