blockmine 1.21.0 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/README.md +469 -0
- package/.claude/agents/auth-route-debugger.md +118 -0
- package/.claude/agents/auth-route-tester.md +93 -0
- package/.claude/agents/auto-error-resolver.md +97 -0
- package/.claude/agents/build-optimizer.md +236 -0
- package/.claude/agents/code-architecture-reviewer.md +83 -0
- package/.claude/agents/code-refactor-master.md +94 -0
- package/.claude/agents/cost-optimizer.md +134 -0
- package/.claude/agents/deployment-orchestrator.md +113 -0
- package/.claude/agents/documentation-architect.md +82 -0
- package/.claude/agents/frontend-error-fixer.md +77 -0
- package/.claude/agents/iac-code-generator.md +71 -0
- package/.claude/agents/incident-responder.md +346 -0
- package/.claude/agents/infrastructure-architect.md +31 -0
- package/.claude/agents/kubernetes-specialist.md +56 -0
- package/.claude/agents/migration-planner.md +181 -0
- package/.claude/agents/network-architect.md +196 -0
- package/.claude/agents/plan-reviewer.md +52 -0
- package/.claude/agents/refactor-planner.md +63 -0
- package/.claude/agents/security-scanner.md +102 -0
- package/.claude/agents/web-research-specialist.md +78 -0
- package/.claude/commands/cost-analysis.md +315 -0
- package/.claude/commands/dev-docs-update.md +55 -0
- package/.claude/commands/dev-docs.md +51 -0
- package/.claude/commands/incident-debug.md +247 -0
- package/.claude/commands/infra-plan.md +81 -0
- package/.claude/commands/migration-plan.md +478 -0
- package/.claude/commands/route-research-for-testing.md +37 -0
- package/.claude/commands/security-review.md +66 -0
- package/.claude/hooks/CONFIG.md +448 -0
- package/.claude/hooks/README.md +163 -0
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
- package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
- package/.claude/hooks/add-skill-activation-banners.ts +132 -0
- package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +222 -0
- package/.claude/hooks/k8s-manifest-validator.sh +56 -0
- package/.claude/hooks/package-lock.json +556 -0
- package/.claude/hooks/package.json +16 -0
- package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
- package/.claude/hooks/post-tool-use-tracker.sh +183 -0
- package/.claude/hooks/security-policy-check.sh +247 -0
- package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
- package/.claude/hooks/skill-activation-prompt.sh +10 -0
- package/.claude/hooks/skill-activation-prompt.ts +141 -0
- package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
- package/.claude/hooks/terraform-validator.sh +53 -0
- package/.claude/hooks/test-input.json +7 -0
- package/.claude/hooks/test-skill-activation.ts +427 -0
- package/.claude/hooks/trigger-build-resolver.sh +79 -0
- package/.claude/hooks/tsc-check.sh +173 -0
- package/.claude/hooks/tsconfig.json +19 -0
- package/.claude/settings.json +55 -0
- package/.claude/settings.local.json +27 -14
- package/.claude/skills/README.md +507 -0
- package/.claude/skills/api-engineering/SKILL.md +63 -0
- package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
- package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
- package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
- package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
- package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
- package/.claude/skills/build-engineering/SKILL.md +431 -0
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
- package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
- package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
- package/.claude/skills/build-engineering/resources/build-security.md +95 -0
- package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
- package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
- package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
- package/.claude/skills/cloud-engineering/SKILL.md +675 -0
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
- package/.claude/skills/cybersecurity/SKILL.md +409 -0
- package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
- package/.claude/skills/database-engineering/SKILL.md +61 -0
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
- package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
- package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
- package/.claude/skills/devsecops/SKILL.md +374 -0
- package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
- package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
- package/.claude/skills/devsecops/resources/container-security.md +915 -0
- package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
- package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
- package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
- package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
- package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
- package/.claude/skills/devsecops/resources/security-testing.md +203 -0
- package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
- package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
- package/.claude/skills/documentation-as-code/SKILL.md +323 -0
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
- package/.claude/skills/engineering-management/SKILL.md +356 -0
- package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
- package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
- package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
- package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
- package/.claude/skills/error-tracking/SKILL.md +379 -0
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/.claude/skills/general-it-engineering/SKILL.md +393 -0
- package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
- package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
- package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
- package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
- package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
- package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
- package/.claude/skills/network-engineering/SKILL.md +385 -0
- package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
- package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
- package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
- package/.claude/skills/network-engineering/resources/network-security.md +921 -0
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
- package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
- package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
- package/.claude/skills/observability-engineering/SKILL.md +101 -0
- package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
- package/.claude/skills/platform-engineering/SKILL.md +555 -0
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
- package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
- package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
- package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
- package/.claude/skills/release-engineering/SKILL.md +393 -0
- package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
- package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
- package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
- package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
- package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
- package/.claude/skills/route-tester/SKILL.md +392 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +430 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +2940 -0
- package/.claude/skills/sre/SKILL.md +464 -0
- package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
- package/.claude/skills/sre/resources/capacity-planning.md +226 -0
- package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
- package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
- package/.claude/skills/sre/resources/incident-management.md +436 -0
- package/.claude/skills/sre/resources/observability-stack.md +240 -0
- package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
- package/.claude/skills/sre/resources/performance-optimization.md +108 -0
- package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
- package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
- package/.claude/skills/sre/resources/toil-reduction.md +145 -0
- package/.claude/skills/systems-engineering/SKILL.md +648 -0
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
- package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
- package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
- package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
- package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
- package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
- package/.claude/skills/technical-leadership/SKILL.md +728 -0
- package/CHANGELOG.md +90 -54
- package/README.md +94 -0
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6129 -0
- package/backend/package.json +16 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/schema.prisma +33 -0
- package/backend/src/__tests__/core/DependencyService.test.js +336 -0
- package/backend/src/__tests__/core/UserService.test.js +875 -0
- package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
- package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
- package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
- package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
- package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
- package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
- package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
- package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
- package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
- package/backend/src/__tests__/secretsFilter.test.js +425 -0
- package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
- package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
- package/backend/src/__tests__/services/CacheManager.test.js +125 -0
- package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
- package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
- package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
- package/backend/src/__tests__/setup.js +25 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/bots.js +49 -7
- package/backend/src/api/routes/plugins.js +2 -1
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotManager.js +142 -871
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +1092 -858
- package/backend/src/core/EventGraphManager.js +280 -198
- package/backend/src/core/GraphExecutionEngine.js +321 -325
- package/backend/src/core/MessageQueue.js +27 -6
- package/backend/src/core/NodeRegistry.js +37 -1134
- package/backend/src/core/PluginManager.js +62 -12
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/UserService.js +3 -3
- package/backend/src/core/__tests__/PrismaService.test.js +24 -0
- package/backend/src/core/commands/README.md +305 -0
- package/backend/src/core/commands/dev.js +13 -7
- package/backend/src/core/commands/ping.js +10 -4
- package/backend/src/core/commands/whois.js +63 -0
- package/backend/src/core/config/validation.js +27 -0
- package/backend/src/core/constants/graphTypes.js +21 -0
- package/backend/src/core/node-registries/actions.js +132 -0
- package/backend/src/core/node-registries/arrays.js +137 -0
- package/backend/src/core/node-registries/bot.js +23 -0
- package/backend/src/core/node-registries/data.js +290 -0
- package/backend/src/core/node-registries/debug.js +26 -0
- package/backend/src/core/node-registries/events.js +187 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +45 -0
- package/backend/src/core/node-registries/math.js +42 -0
- package/backend/src/core/node-registries/objects.js +98 -0
- package/backend/src/core/node-registries/strings.js +153 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/users.js +79 -0
- package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
- package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
- package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
- package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
- package/backend/src/core/nodes/data/datetime_literal.js +27 -0
- package/backend/src/core/nodes/data/entity_info.js +69 -0
- package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
- package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
- package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
- package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
- package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
- package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
- package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
- package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
- package/backend/src/core/nodes/time/add.js +33 -0
- package/backend/src/core/nodes/time/compare.js +35 -0
- package/backend/src/core/nodes/time/diff.js +29 -0
- package/backend/src/core/nodes/time/format.js +32 -0
- package/backend/src/core/nodes/time/now.js +18 -0
- package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
- package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
- package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
- package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
- package/backend/src/core/services/BotLifecycleService.js +596 -0
- package/backend/src/core/services/BotProcessManager.js +163 -0
- package/backend/src/core/services/CacheManager.js +111 -0
- package/backend/src/core/services/CommandExecutionService.js +351 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/ValidationService.js +132 -0
- package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
- package/backend/src/core/services.js +20 -5
- package/backend/src/core/system/CommandContext.js +84 -0
- package/backend/src/core/system/Transport.js +78 -0
- package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
- package/backend/src/core/utils/jsonParser.js +18 -0
- package/backend/src/core/utils/secretsFilter.js +262 -0
- package/backend/src/core/utils/variableParser.js +89 -0
- package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
- package/backend/src/core/validation/nodeSchemas.js +112 -0
- package/backend/src/lib/prisma.js +2 -4
- package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
- package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
- package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
- package/backend/src/real-time/botApi/handlers/index.js +43 -0
- package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
- package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
- package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
- package/backend/src/real-time/botApi/index.js +40 -0
- package/backend/src/real-time/botApi/middleware.js +79 -0
- package/backend/src/real-time/botApi/utils.js +54 -0
- package/backend/src/real-time/socketHandler.js +6 -2
- package/backend/src/repositories/BaseRepository.js +43 -0
- package/backend/src/repositories/BotRepository.js +42 -0
- package/backend/src/repositories/CommandRepository.js +53 -0
- package/backend/src/repositories/EventGraphRepository.js +40 -0
- package/backend/src/repositories/GroupRepository.js +69 -0
- package/backend/src/repositories/PermissionRepository.js +48 -0
- package/backend/src/repositories/PluginRepository.js +42 -0
- package/backend/src/repositories/ServerRepository.js +27 -0
- package/backend/src/repositories/UserRepository.js +48 -0
- package/backend/src/server.js +3 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-CfTo92bP.css +1 -0
- package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package.json +0 -5
- package/package.json +2 -1
- package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
- package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
- package/nul +0 -0
- /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
- /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
- /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
- /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
- /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
- /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
- /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
- /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
- /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
- /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
- /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
- /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
- /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
- /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
- /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
- /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
- /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
- /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
- /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
- /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
- /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
- /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
- /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
- /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
- /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
- /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
- /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
- /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
- /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
|
@@ -0,0 +1,738 @@
|
|
|
1
|
+
# Windows Administration
|
|
2
|
+
|
|
3
|
+
Comprehensive guide to Windows Server administration covering Active Directory, Group Policy, Windows services, IIS, WSUS, security hardening, and operational management.
|
|
4
|
+
|
|
5
|
+
## Windows Server Architecture
|
|
6
|
+
|
|
7
|
+
### Server Roles and Features
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
11
|
+
│ Windows Server Roles │
|
|
12
|
+
├─────────────────────────────────────────────────────────────┤
|
|
13
|
+
│ Active Directory Domain Services (AD DS) │
|
|
14
|
+
│ DNS Server │
|
|
15
|
+
│ DHCP Server │
|
|
16
|
+
│ File and Storage Services │
|
|
17
|
+
│ Web Server (IIS) │
|
|
18
|
+
│ Hyper-V │
|
|
19
|
+
│ Remote Desktop Services │
|
|
20
|
+
│ Windows Server Update Services (WSUS) │
|
|
21
|
+
└─────────────────────────────────────────────────────────────┘
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Installing Roles with PowerShell:**
|
|
25
|
+
```powershell
|
|
26
|
+
# Install AD Domain Services
|
|
27
|
+
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
|
|
28
|
+
|
|
29
|
+
# Install DNS Server
|
|
30
|
+
Install-WindowsFeature -Name DNS -IncludeManagementTools
|
|
31
|
+
|
|
32
|
+
# Install IIS with common features
|
|
33
|
+
Install-WindowsFeature -Name Web-Server -IncludeAllSubFeature -IncludeManagementTools
|
|
34
|
+
|
|
35
|
+
# Install WSUS
|
|
36
|
+
Install-WindowsFeature -Name UpdateServices -IncludeManagementTools
|
|
37
|
+
|
|
38
|
+
# List all available roles and features
|
|
39
|
+
Get-WindowsFeature
|
|
40
|
+
|
|
41
|
+
# Remove a role
|
|
42
|
+
Uninstall-WindowsFeature -Name Web-Server -Remove
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Active Directory Domain Services
|
|
46
|
+
|
|
47
|
+
### Domain Controller Setup
|
|
48
|
+
|
|
49
|
+
**Promote Server to Domain Controller:**
|
|
50
|
+
```powershell
|
|
51
|
+
# Install AD DS role first
|
|
52
|
+
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
|
|
53
|
+
|
|
54
|
+
# Create new forest
|
|
55
|
+
$domainName = "company.local"
|
|
56
|
+
$netbiosName = "COMPANY"
|
|
57
|
+
$safeModePwd = ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force
|
|
58
|
+
|
|
59
|
+
Install-ADDSForest `
|
|
60
|
+
-DomainName $domainName `
|
|
61
|
+
-DomainNetbiosName $netbiosName `
|
|
62
|
+
-ForestMode "WinThreshold" `
|
|
63
|
+
-DomainMode "WinThreshold" `
|
|
64
|
+
-InstallDns `
|
|
65
|
+
-SafeModeAdministratorPassword $safeModePwd `
|
|
66
|
+
-Force
|
|
67
|
+
|
|
68
|
+
# Add additional domain controller to existing domain
|
|
69
|
+
$credential = Get-Credential "COMPANY\Administrator"
|
|
70
|
+
|
|
71
|
+
Install-ADDSDomainController `
|
|
72
|
+
-DomainName "company.local" `
|
|
73
|
+
-Credential $credential `
|
|
74
|
+
-InstallDns `
|
|
75
|
+
-SafeModeAdministratorPassword $safeModePwd `
|
|
76
|
+
-Force
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Active Directory User Management
|
|
80
|
+
|
|
81
|
+
**Creating and Managing Users:**
|
|
82
|
+
```powershell
|
|
83
|
+
# Import AD module
|
|
84
|
+
Import-Module ActiveDirectory
|
|
85
|
+
|
|
86
|
+
# Create new user
|
|
87
|
+
New-ADUser `
|
|
88
|
+
-Name "John Smith" `
|
|
89
|
+
-GivenName "John" `
|
|
90
|
+
-Surname "Smith" `
|
|
91
|
+
-SamAccountName "jsmith" `
|
|
92
|
+
-UserPrincipalName "jsmith@company.local" `
|
|
93
|
+
-Path "OU=Users,OU=IT,DC=company,DC=local" `
|
|
94
|
+
-AccountPassword (ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force) `
|
|
95
|
+
-Enabled $true `
|
|
96
|
+
-ChangePasswordAtLogon $true `
|
|
97
|
+
-Description "IT Administrator" `
|
|
98
|
+
-Department "IT" `
|
|
99
|
+
-Title "System Administrator"
|
|
100
|
+
|
|
101
|
+
# Bulk user creation from CSV
|
|
102
|
+
$users = Import-Csv "C:\users.csv"
|
|
103
|
+
foreach ($user in $users) {
|
|
104
|
+
New-ADUser `
|
|
105
|
+
-Name "$($user.FirstName) $($user.LastName)" `
|
|
106
|
+
-GivenName $user.FirstName `
|
|
107
|
+
-Surname $user.LastName `
|
|
108
|
+
-SamAccountName $user.Username `
|
|
109
|
+
-UserPrincipalName "$($user.Username)@company.local" `
|
|
110
|
+
-Path $user.OU `
|
|
111
|
+
-AccountPassword (ConvertTo-SecureString $user.Password -AsPlainText -Force) `
|
|
112
|
+
-Enabled $true `
|
|
113
|
+
-Department $user.Department
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Modify user properties
|
|
117
|
+
Set-ADUser -Identity "jsmith" -Title "Senior System Administrator" -Department "IT"
|
|
118
|
+
|
|
119
|
+
# Disable user account
|
|
120
|
+
Disable-ADAccount -Identity "jsmith"
|
|
121
|
+
|
|
122
|
+
# Enable user account
|
|
123
|
+
Enable-ADAccount -Identity "jsmith"
|
|
124
|
+
|
|
125
|
+
# Reset password
|
|
126
|
+
Set-ADAccountPassword -Identity "jsmith" -Reset -NewPassword (ConvertTo-SecureString "NewP@ssw0rd!" -AsPlainText -Force)
|
|
127
|
+
|
|
128
|
+
# Find inactive users (not logged in for 90 days)
|
|
129
|
+
$inactiveDays = 90
|
|
130
|
+
$cutoffDate = (Get-Date).AddDays(-$inactiveDays)
|
|
131
|
+
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $inactiveDays |
|
|
132
|
+
Select-Object Name, SamAccountName, LastLogonDate
|
|
133
|
+
|
|
134
|
+
# Find locked accounts
|
|
135
|
+
Search-ADAccount -LockedOut | Select-Object Name, SamAccountName, LockedOut
|
|
136
|
+
|
|
137
|
+
# Unlock account
|
|
138
|
+
Unlock-ADAccount -Identity "jsmith"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Organizational Units (OUs) and Groups
|
|
142
|
+
|
|
143
|
+
**OU Management:**
|
|
144
|
+
```powershell
|
|
145
|
+
# Create OU structure
|
|
146
|
+
New-ADOrganizationalUnit -Name "IT" -Path "DC=company,DC=local"
|
|
147
|
+
New-ADOrganizationalUnit -Name "Users" -Path "OU=IT,DC=company,DC=local"
|
|
148
|
+
New-ADOrganizationalUnit -Name "Computers" -Path "OU=IT,DC=company,DC=local"
|
|
149
|
+
|
|
150
|
+
# Move user to different OU
|
|
151
|
+
Move-ADObject -Identity "CN=John Smith,OU=Users,DC=company,DC=local" `
|
|
152
|
+
-TargetPath "OU=Users,OU=IT,DC=company,DC=local"
|
|
153
|
+
|
|
154
|
+
# Delete OU (must be empty or use -Recursive)
|
|
155
|
+
Remove-ADOrganizationalUnit -Identity "OU=OldOU,DC=company,DC=local" -Recursive -Confirm:$false
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Group Management:**
|
|
159
|
+
```powershell
|
|
160
|
+
# Create security group
|
|
161
|
+
New-ADGroup `
|
|
162
|
+
-Name "IT-Administrators" `
|
|
163
|
+
-SamAccountName "IT-Admins" `
|
|
164
|
+
-GroupCategory Security `
|
|
165
|
+
-GroupScope Global `
|
|
166
|
+
-Path "OU=Groups,OU=IT,DC=company,DC=local" `
|
|
167
|
+
-Description "IT Department Administrators"
|
|
168
|
+
|
|
169
|
+
# Add user to group
|
|
170
|
+
Add-ADGroupMember -Identity "IT-Administrators" -Members "jsmith"
|
|
171
|
+
|
|
172
|
+
# Add multiple users
|
|
173
|
+
Add-ADGroupMember -Identity "IT-Administrators" -Members @("jsmith", "jdoe", "aadams")
|
|
174
|
+
|
|
175
|
+
# Remove user from group
|
|
176
|
+
Remove-ADGroupMember -Identity "IT-Administrators" -Members "jsmith" -Confirm:$false
|
|
177
|
+
|
|
178
|
+
# List group members
|
|
179
|
+
Get-ADGroupMember -Identity "IT-Administrators" | Select-Object Name, SamAccountName
|
|
180
|
+
|
|
181
|
+
# List groups user belongs to
|
|
182
|
+
Get-ADPrincipalGroupMembership -Identity "jsmith" | Select-Object Name
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Group Policy (GPO)
|
|
186
|
+
|
|
187
|
+
### Creating and Managing GPOs
|
|
188
|
+
|
|
189
|
+
**PowerShell GPO Management:**
|
|
190
|
+
```powershell
|
|
191
|
+
# Import Group Policy module
|
|
192
|
+
Import-Module GroupPolicy
|
|
193
|
+
|
|
194
|
+
# Create new GPO
|
|
195
|
+
New-GPO -Name "Security-Baseline" -Comment "Corporate security baseline settings"
|
|
196
|
+
|
|
197
|
+
# Link GPO to OU
|
|
198
|
+
New-GPLink -Name "Security-Baseline" -Target "OU=IT,DC=company,DC=local" -LinkEnabled Yes
|
|
199
|
+
|
|
200
|
+
# Set GPO registry value (example: disable guest account)
|
|
201
|
+
Set-GPRegistryValue -Name "Security-Baseline" `
|
|
202
|
+
-Key "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" `
|
|
203
|
+
-ValueName "AutoAdminLogon" `
|
|
204
|
+
-Type String `
|
|
205
|
+
-Value "0"
|
|
206
|
+
|
|
207
|
+
# Backup GPO
|
|
208
|
+
Backup-GPO -Name "Security-Baseline" -Path "C:\GPO-Backups"
|
|
209
|
+
|
|
210
|
+
# Backup all GPOs
|
|
211
|
+
Backup-GPO -All -Path "C:\GPO-Backups"
|
|
212
|
+
|
|
213
|
+
# Restore GPO
|
|
214
|
+
Restore-GPO -Name "Security-Baseline" -Path "C:\GPO-Backups"
|
|
215
|
+
|
|
216
|
+
# Generate GPO report
|
|
217
|
+
Get-GPOReport -Name "Security-Baseline" -ReportType Html -Path "C:\Reports\SecurityBaseline.html"
|
|
218
|
+
|
|
219
|
+
# List all GPOs
|
|
220
|
+
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime
|
|
221
|
+
|
|
222
|
+
# Force Group Policy update on client
|
|
223
|
+
gpupdate /force
|
|
224
|
+
|
|
225
|
+
# Force Group Policy update remotely
|
|
226
|
+
Invoke-Command -ComputerName "WS01" -ScriptBlock { gpupdate /force }
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Common GPO Settings
|
|
230
|
+
|
|
231
|
+
**Security Policies via GPO:**
|
|
232
|
+
```powershell
|
|
233
|
+
# Password Policy (via Set-ADDefaultDomainPasswordPolicy)
|
|
234
|
+
Set-ADDefaultDomainPasswordPolicy -Identity "company.local" `
|
|
235
|
+
-MinPasswordLength 14 `
|
|
236
|
+
-PasswordHistoryCount 24 `
|
|
237
|
+
-MaxPasswordAge (New-TimeSpan -Days 90) `
|
|
238
|
+
-MinPasswordAge (New-TimeSpan -Days 1) `
|
|
239
|
+
-ComplexityEnabled $true `
|
|
240
|
+
-LockoutDuration (New-TimeSpan -Minutes 30) `
|
|
241
|
+
-LockoutThreshold 5 `
|
|
242
|
+
-LockoutObservationWindow (New-TimeSpan -Minutes 30)
|
|
243
|
+
|
|
244
|
+
# Account Lockout Policy via LGPO
|
|
245
|
+
# Note: Complex GPO settings typically done via GUI or LGPO tool
|
|
246
|
+
# Example: Deploy Security Template
|
|
247
|
+
secedit /configure /db secedit.sdb /cfg "C:\SecurityTemplates\baseline.inf"
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Windows Services
|
|
251
|
+
|
|
252
|
+
### Service Management
|
|
253
|
+
|
|
254
|
+
**Managing Services with PowerShell:**
|
|
255
|
+
```powershell
|
|
256
|
+
# List all services
|
|
257
|
+
Get-Service | Select-Object Name, DisplayName, Status, StartType
|
|
258
|
+
|
|
259
|
+
# Get specific service
|
|
260
|
+
Get-Service -Name "W3SVC" # IIS
|
|
261
|
+
|
|
262
|
+
# Start service
|
|
263
|
+
Start-Service -Name "W3SVC"
|
|
264
|
+
|
|
265
|
+
# Stop service
|
|
266
|
+
Stop-Service -Name "W3SVC"
|
|
267
|
+
|
|
268
|
+
# Restart service
|
|
269
|
+
Restart-Service -Name "W3SVC"
|
|
270
|
+
|
|
271
|
+
# Set service startup type
|
|
272
|
+
Set-Service -Name "W3SVC" -StartupType Automatic
|
|
273
|
+
|
|
274
|
+
# Create new service (example: run PowerShell script as service)
|
|
275
|
+
New-Service -Name "CustomMonitor" `
|
|
276
|
+
-BinaryPathName "C:\Scripts\monitor.exe" `
|
|
277
|
+
-DisplayName "Custom Monitoring Service" `
|
|
278
|
+
-Description "Monitors system resources" `
|
|
279
|
+
-StartupType Automatic
|
|
280
|
+
|
|
281
|
+
# Delete service
|
|
282
|
+
Remove-Service -Name "CustomMonitor" # PowerShell 6+
|
|
283
|
+
# For PowerShell 5.1 and earlier:
|
|
284
|
+
sc.exe delete "CustomMonitor"
|
|
285
|
+
|
|
286
|
+
# Get service dependencies
|
|
287
|
+
Get-Service -Name "W3SVC" -DependentServices
|
|
288
|
+
Get-Service -Name "W3SVC" -RequiredServices
|
|
289
|
+
|
|
290
|
+
# Filter running services
|
|
291
|
+
Get-Service | Where-Object { $_.Status -eq "Running" }
|
|
292
|
+
|
|
293
|
+
# Monitor service and restart if stopped
|
|
294
|
+
$serviceName = "W3SVC"
|
|
295
|
+
$service = Get-Service -Name $serviceName
|
|
296
|
+
if ($service.Status -ne "Running") {
|
|
297
|
+
Start-Service -Name $serviceName
|
|
298
|
+
Write-Host "Service $serviceName was stopped and has been restarted"
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Creating Windows Service with NSSM
|
|
303
|
+
|
|
304
|
+
**NSSM (Non-Sucking Service Manager):**
|
|
305
|
+
```powershell
|
|
306
|
+
# Download and install NSSM
|
|
307
|
+
# Example: Install PowerShell script as service
|
|
308
|
+
|
|
309
|
+
# Install service using NSSM
|
|
310
|
+
nssm install MyAppService "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" `
|
|
311
|
+
"-ExecutionPolicy Bypass -NoProfile -File C:\Scripts\MyApp.ps1"
|
|
312
|
+
|
|
313
|
+
# Set service description
|
|
314
|
+
nssm set MyAppService Description "My Application Service"
|
|
315
|
+
|
|
316
|
+
# Set service startup directory
|
|
317
|
+
nssm set MyAppService AppDirectory "C:\Scripts"
|
|
318
|
+
|
|
319
|
+
# Set service log file
|
|
320
|
+
nssm set MyAppService AppStdout "C:\Logs\MyApp-output.log"
|
|
321
|
+
nssm set MyAppService AppStderr "C:\Logs\MyApp-error.log"
|
|
322
|
+
|
|
323
|
+
# Set service restart behavior
|
|
324
|
+
nssm set MyAppService AppExit Default Restart
|
|
325
|
+
|
|
326
|
+
# Start service
|
|
327
|
+
nssm start MyAppService
|
|
328
|
+
|
|
329
|
+
# Remove service
|
|
330
|
+
nssm remove MyAppService confirm
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
## Windows Registry
|
|
334
|
+
|
|
335
|
+
### Registry Operations
|
|
336
|
+
|
|
337
|
+
**PowerShell Registry Management:**
|
|
338
|
+
```powershell
|
|
339
|
+
# Registry is accessed like filesystem with PSDrive
|
|
340
|
+
|
|
341
|
+
# Read registry value
|
|
342
|
+
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion" -Name "ProgramFilesDir"
|
|
343
|
+
|
|
344
|
+
# Set registry value
|
|
345
|
+
Set-ItemProperty -Path "HKLM:\SOFTWARE\MyApp" -Name "ConfigPath" -Value "C:\Config"
|
|
346
|
+
|
|
347
|
+
# Create new registry key
|
|
348
|
+
New-Item -Path "HKLM:\SOFTWARE\MyCompany"
|
|
349
|
+
|
|
350
|
+
# Create registry value
|
|
351
|
+
New-ItemProperty -Path "HKLM:\SOFTWARE\MyCompany" -Name "Version" -Value "1.0" -PropertyType String
|
|
352
|
+
|
|
353
|
+
# Delete registry key
|
|
354
|
+
Remove-Item -Path "HKLM:\SOFTWARE\MyCompany" -Recurse
|
|
355
|
+
|
|
356
|
+
# Delete registry value
|
|
357
|
+
Remove-ItemProperty -Path "HKLM:\SOFTWARE\MyCompany" -Name "Version"
|
|
358
|
+
|
|
359
|
+
# Check if registry key exists
|
|
360
|
+
Test-Path "HKLM:\SOFTWARE\MyCompany"
|
|
361
|
+
|
|
362
|
+
# Backup registry key
|
|
363
|
+
reg export "HKLM\SOFTWARE\MyCompany" "C:\Backups\MyCompany.reg"
|
|
364
|
+
|
|
365
|
+
# Restore registry key
|
|
366
|
+
reg import "C:\Backups\MyCompany.reg"
|
|
367
|
+
|
|
368
|
+
# Remote registry operations
|
|
369
|
+
$computer = "Server01"
|
|
370
|
+
Invoke-Command -ComputerName $computer -ScriptBlock {
|
|
371
|
+
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion" -Name "ProgramFilesDir"
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
## IIS Web Server
|
|
376
|
+
|
|
377
|
+
### IIS Management
|
|
378
|
+
|
|
379
|
+
**IIS PowerShell Administration:**
|
|
380
|
+
```powershell
|
|
381
|
+
# Import IIS module
|
|
382
|
+
Import-Module WebAdministration
|
|
383
|
+
|
|
384
|
+
# List all websites
|
|
385
|
+
Get-Website | Select-Object Name, State, PhysicalPath, Bindings
|
|
386
|
+
|
|
387
|
+
# Create new website
|
|
388
|
+
New-Website -Name "MyWebsite" `
|
|
389
|
+
-Port 80 `
|
|
390
|
+
-PhysicalPath "C:\inetpub\wwwroot\mysite" `
|
|
391
|
+
-ApplicationPool "DefaultAppPool"
|
|
392
|
+
|
|
393
|
+
# Create website with HTTPS binding
|
|
394
|
+
New-Website -Name "SecureWebsite" `
|
|
395
|
+
-Port 443 `
|
|
396
|
+
-PhysicalPath "C:\inetpub\wwwroot\securesite" `
|
|
397
|
+
-Ssl `
|
|
398
|
+
-ApplicationPool "DefaultAppPool"
|
|
399
|
+
|
|
400
|
+
# Add website binding
|
|
401
|
+
New-WebBinding -Name "MyWebsite" -IPAddress "*" -Port 8080 -Protocol http
|
|
402
|
+
|
|
403
|
+
# Start/Stop website
|
|
404
|
+
Start-Website -Name "MyWebsite"
|
|
405
|
+
Stop-Website -Name "MyWebsite"
|
|
406
|
+
|
|
407
|
+
# Create application pool
|
|
408
|
+
New-WebAppPool -Name "MyAppPool"
|
|
409
|
+
|
|
410
|
+
# Configure application pool
|
|
411
|
+
Set-ItemProperty -Path "IIS:\AppPools\MyAppPool" -Name processModel.identityType -Value 4 # ApplicationPoolIdentity
|
|
412
|
+
Set-ItemProperty -Path "IIS:\AppPools\MyAppPool" -Name recycling.periodicRestart.time -Value "00:00:00"
|
|
413
|
+
|
|
414
|
+
# Start/Stop application pool
|
|
415
|
+
Start-WebAppPool -Name "MyAppPool"
|
|
416
|
+
Stop-WebAppPool -Name "MyAppPool"
|
|
417
|
+
Restart-WebAppPool -Name "MyAppPool"
|
|
418
|
+
|
|
419
|
+
# Create virtual directory
|
|
420
|
+
New-WebVirtualDirectory -Site "MyWebsite" -Name "images" -PhysicalPath "C:\images"
|
|
421
|
+
|
|
422
|
+
# List application pools
|
|
423
|
+
Get-IISAppPool | Select-Object Name, Status, ManagedRuntimeVersion
|
|
424
|
+
|
|
425
|
+
# Get website bindings
|
|
426
|
+
Get-WebBinding -Name "MyWebsite"
|
|
427
|
+
|
|
428
|
+
# Remove website
|
|
429
|
+
Remove-Website -Name "MyWebsite"
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### IIS SSL Certificate Management
|
|
433
|
+
|
|
434
|
+
**SSL Certificate Operations:**
|
|
435
|
+
```powershell
|
|
436
|
+
# Import certificate to certificate store
|
|
437
|
+
$certPassword = ConvertTo-SecureString -String "P@ssw0rd" -Force -AsPlainText
|
|
438
|
+
Import-PfxCertificate -FilePath "C:\Certificates\mycert.pfx" `
|
|
439
|
+
-CertStoreLocation Cert:\LocalMachine\My `
|
|
440
|
+
-Password $certPassword
|
|
441
|
+
|
|
442
|
+
# List certificates
|
|
443
|
+
Get-ChildItem -Path Cert:\LocalMachine\My | Select-Object Thumbprint, Subject, NotAfter
|
|
444
|
+
|
|
445
|
+
# Bind SSL certificate to website
|
|
446
|
+
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*mysite.com*" }
|
|
447
|
+
New-WebBinding -Name "MyWebsite" -IPAddress "*" -Port 443 -Protocol https
|
|
448
|
+
$binding = Get-WebBinding -Name "MyWebsite" -Protocol https
|
|
449
|
+
$binding.AddSslCertificate($cert.Thumbprint, "my")
|
|
450
|
+
|
|
451
|
+
# Remove certificate binding
|
|
452
|
+
Remove-Item -Path "IIS:\SslBindings\0.0.0.0!443"
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
## WSUS (Windows Server Update Services)
|
|
456
|
+
|
|
457
|
+
### WSUS Configuration
|
|
458
|
+
|
|
459
|
+
**PowerShell WSUS Management:**
|
|
460
|
+
```powershell
|
|
461
|
+
# Load WSUS assembly
|
|
462
|
+
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | Out-Null
|
|
463
|
+
|
|
464
|
+
# Connect to WSUS server
|
|
465
|
+
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("WSUSServer", $false, 8530)
|
|
466
|
+
|
|
467
|
+
# Get WSUS configuration
|
|
468
|
+
$wsusConfig = $wsus.GetConfiguration()
|
|
469
|
+
$wsusConfig.SyncFromMicrosoftUpdate = $true
|
|
470
|
+
$wsusConfig.Save()
|
|
471
|
+
|
|
472
|
+
# Get subscription and sync
|
|
473
|
+
$subscription = $wsus.GetSubscription()
|
|
474
|
+
$subscription.StartSynchronization()
|
|
475
|
+
|
|
476
|
+
# Check sync status
|
|
477
|
+
$subscription.GetSynchronizationStatus()
|
|
478
|
+
|
|
479
|
+
# Get update categories
|
|
480
|
+
$wsus.GetUpdateCategories() | Select-Object Title, Type
|
|
481
|
+
|
|
482
|
+
# Approve updates for specific group
|
|
483
|
+
$targetGroup = $wsus.GetComputerTargetGroups() | Where-Object { $_.Name -eq "Production Servers" }
|
|
484
|
+
$updates = $wsus.GetUpdates() | Where-Object { $_.IsApproved -eq $false -and $_.IsSuperseded -eq $false }
|
|
485
|
+
|
|
486
|
+
foreach ($update in $updates) {
|
|
487
|
+
$update.Approve("Install", $targetGroup)
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
# Get computer targets
|
|
491
|
+
$wsus.GetComputerTargets() | Select-Object FullDomainName, LastReportedStatusTime, LastSyncTime
|
|
492
|
+
|
|
493
|
+
# Decline superseded updates
|
|
494
|
+
$wsus.GetUpdates() | Where-Object { $_.IsSuperseded -eq $true } | ForEach-Object {
|
|
495
|
+
$_.Decline()
|
|
496
|
+
}
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
## Windows Security Hardening
|
|
500
|
+
|
|
501
|
+
### Security Baseline
|
|
502
|
+
|
|
503
|
+
**Security Configuration Script:**
|
|
504
|
+
```powershell
|
|
505
|
+
# Disable unnecessary services
|
|
506
|
+
$servicesToDisable = @(
|
|
507
|
+
"RemoteRegistry",
|
|
508
|
+
"RemoteAccess",
|
|
509
|
+
"HomeGroupListener",
|
|
510
|
+
"HomeGroupProvider"
|
|
511
|
+
)
|
|
512
|
+
|
|
513
|
+
foreach ($service in $servicesToDisable) {
|
|
514
|
+
if (Get-Service -Name $service -ErrorAction SilentlyContinue) {
|
|
515
|
+
Stop-Service -Name $service -Force
|
|
516
|
+
Set-Service -Name $service -StartupType Disabled
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
# Configure Windows Firewall
|
|
521
|
+
Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled True
|
|
522
|
+
|
|
523
|
+
# Disable SMBv1
|
|
524
|
+
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
|
|
525
|
+
|
|
526
|
+
# Enable Windows Defender real-time protection
|
|
527
|
+
Set-MpPreference -DisableRealtimeMonitoring $false
|
|
528
|
+
|
|
529
|
+
# Configure UAC (User Account Control)
|
|
530
|
+
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" `
|
|
531
|
+
-Name "EnableLUA" -Value 1
|
|
532
|
+
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" `
|
|
533
|
+
-Name "ConsentPromptBehaviorAdmin" -Value 2 # Prompt for consent
|
|
534
|
+
|
|
535
|
+
# Disable guest account
|
|
536
|
+
Disable-LocalUser -Name "Guest"
|
|
537
|
+
|
|
538
|
+
# Configure audit policy
|
|
539
|
+
auditpol /set /subcategory:"Logon" /success:enable /failure:enable
|
|
540
|
+
auditpol /set /subcategory:"Account Lockout" /success:enable /failure:enable
|
|
541
|
+
auditpol /set /subcategory:"User Account Management" /success:enable /failure:enable
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
## Windows Event Logs
|
|
545
|
+
|
|
546
|
+
### Event Log Management
|
|
547
|
+
|
|
548
|
+
**PowerShell Event Log Operations:**
|
|
549
|
+
```powershell
|
|
550
|
+
# Get event logs
|
|
551
|
+
Get-EventLog -List
|
|
552
|
+
|
|
553
|
+
# Get recent system errors
|
|
554
|
+
Get-EventLog -LogName System -EntryType Error -Newest 50
|
|
555
|
+
|
|
556
|
+
# Get security events (logon failures)
|
|
557
|
+
Get-EventLog -LogName Security -InstanceId 4625 -Newest 100
|
|
558
|
+
|
|
559
|
+
# Filter by time range
|
|
560
|
+
Get-EventLog -LogName System -After (Get-Date).AddDays(-1) -Before (Get-Date)
|
|
561
|
+
|
|
562
|
+
# Using Get-WinEvent (more powerful, supports newer logs)
|
|
563
|
+
Get-WinEvent -LogName Application -MaxEvents 100
|
|
564
|
+
|
|
565
|
+
# Query with FilterHashTable
|
|
566
|
+
Get-WinEvent -FilterHashtable @{
|
|
567
|
+
LogName = 'Security'
|
|
568
|
+
ID = 4624 # Successful logon
|
|
569
|
+
StartTime = (Get-Date).AddDays(-7)
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
# Query with XPath
|
|
573
|
+
Get-WinEvent -LogName Security -FilterXPath "*[System[EventID=4625]]"
|
|
574
|
+
|
|
575
|
+
# Export events to CSV
|
|
576
|
+
Get-EventLog -LogName System -Newest 1000 |
|
|
577
|
+
Export-Csv -Path "C:\Logs\SystemEvents.csv" -NoTypeInformation
|
|
578
|
+
|
|
579
|
+
# Clear event log
|
|
580
|
+
Clear-EventLog -LogName Application
|
|
581
|
+
|
|
582
|
+
# Configure log size and retention
|
|
583
|
+
Limit-EventLog -LogName Application -MaximumSize 512MB -OverflowAction OverwriteAsNeeded
|
|
584
|
+
|
|
585
|
+
# Monitor event log in real-time
|
|
586
|
+
Get-EventLog -LogName System -Newest 10 -AsBaseObject |
|
|
587
|
+
Select-Object TimeGenerated, EntryType, Source, Message
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
## Remote Desktop and WinRM
|
|
591
|
+
|
|
592
|
+
### Remote Management
|
|
593
|
+
|
|
594
|
+
**WinRM Configuration:**
|
|
595
|
+
```powershell
|
|
596
|
+
# Enable WinRM
|
|
597
|
+
Enable-PSRemoting -Force
|
|
598
|
+
|
|
599
|
+
# Configure TrustedHosts (for non-domain environments)
|
|
600
|
+
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "Server01,Server02" -Force
|
|
601
|
+
|
|
602
|
+
# Test WinRM connectivity
|
|
603
|
+
Test-WSMan -ComputerName "Server01"
|
|
604
|
+
|
|
605
|
+
# Remote command execution
|
|
606
|
+
Invoke-Command -ComputerName "Server01" -ScriptBlock {
|
|
607
|
+
Get-Service -Name "W3SVC"
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
# Remote command with credentials
|
|
611
|
+
$cred = Get-Credential
|
|
612
|
+
Invoke-Command -ComputerName "Server01" -Credential $cred -ScriptBlock {
|
|
613
|
+
Get-Process
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
# Interactive remote session
|
|
617
|
+
Enter-PSSession -ComputerName "Server01"
|
|
618
|
+
|
|
619
|
+
# Run command on multiple computers
|
|
620
|
+
Invoke-Command -ComputerName "Server01", "Server02", "Server03" -ScriptBlock {
|
|
621
|
+
Get-EventLog -LogName System -Newest 10
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
# Copy files to remote computer
|
|
625
|
+
$session = New-PSSession -ComputerName "Server01"
|
|
626
|
+
Copy-Item -Path "C:\Scripts\script.ps1" -Destination "C:\Scripts\" -ToSession $session
|
|
627
|
+
Remove-PSSession $session
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
**Remote Desktop Configuration:**
|
|
631
|
+
```powershell
|
|
632
|
+
# Enable Remote Desktop
|
|
633
|
+
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" `
|
|
634
|
+
-Name "fDenyTSConnections" -Value 0
|
|
635
|
+
|
|
636
|
+
# Enable Network Level Authentication
|
|
637
|
+
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" `
|
|
638
|
+
-Name "UserAuthentication" -Value 1
|
|
639
|
+
|
|
640
|
+
# Configure firewall for RDP
|
|
641
|
+
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
|
|
642
|
+
|
|
643
|
+
# Get RDP sessions
|
|
644
|
+
qwinsta
|
|
645
|
+
|
|
646
|
+
# Disconnect RDP session
|
|
647
|
+
logoff <session-id>
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
## Windows Clustering and Failover
|
|
651
|
+
|
|
652
|
+
### Failover Clustering
|
|
653
|
+
|
|
654
|
+
**Cluster Management:**
|
|
655
|
+
```powershell
|
|
656
|
+
# Install Failover Clustering feature
|
|
657
|
+
Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools
|
|
658
|
+
|
|
659
|
+
# Test cluster configuration
|
|
660
|
+
Test-Cluster -Node "Node1", "Node2"
|
|
661
|
+
|
|
662
|
+
# Create new cluster
|
|
663
|
+
New-Cluster -Name "MyCluster" -Node "Node1", "Node2" -StaticAddress "192.168.1.100"
|
|
664
|
+
|
|
665
|
+
# Add node to cluster
|
|
666
|
+
Add-ClusterNode -Name "Node3" -Cluster "MyCluster"
|
|
667
|
+
|
|
668
|
+
# Remove node from cluster
|
|
669
|
+
Remove-ClusterNode -Name "Node3" -Cluster "MyCluster"
|
|
670
|
+
|
|
671
|
+
# Get cluster resources
|
|
672
|
+
Get-ClusterResource
|
|
673
|
+
|
|
674
|
+
# Get cluster status
|
|
675
|
+
Get-Cluster | Select-Object Name, Domain, QuorumType
|
|
676
|
+
|
|
677
|
+
# Create clustered role (example: file server)
|
|
678
|
+
Add-ClusterFileServerRole -Name "FileServer01" -Storage "Cluster Disk 1" -StaticAddress "192.168.1.101"
|
|
679
|
+
|
|
680
|
+
# Move cluster group to different node
|
|
681
|
+
Move-ClusterGroup -Name "FileServer01" -Node "Node2"
|
|
682
|
+
|
|
683
|
+
# Get cluster events
|
|
684
|
+
Get-ClusterLog -Destination "C:\Logs"
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
## Best Practices
|
|
688
|
+
|
|
689
|
+
### Windows Administration Best Practices
|
|
690
|
+
|
|
691
|
+
1. **Security:**
|
|
692
|
+
- Implement least privilege access (RBAC)
|
|
693
|
+
- Regular security updates via WSUS
|
|
694
|
+
- Enable BitLocker on sensitive servers
|
|
695
|
+
- Use strong password policies
|
|
696
|
+
- Enable audit logging
|
|
697
|
+
- Disable unnecessary services and protocols
|
|
698
|
+
|
|
699
|
+
2. **Active Directory:**
|
|
700
|
+
- Regular AD backups (System State)
|
|
701
|
+
- Multiple domain controllers for redundancy
|
|
702
|
+
- Proper OU structure for GPO application
|
|
703
|
+
- Regular AD health checks (dcdiag, repadmin)
|
|
704
|
+
- Implement fine-grained password policies
|
|
705
|
+
|
|
706
|
+
3. **Monitoring:**
|
|
707
|
+
- Configure event log forwarding
|
|
708
|
+
- Monitor critical services
|
|
709
|
+
- Track failed login attempts
|
|
710
|
+
- Monitor disk space and performance
|
|
711
|
+
- Set up alerts for critical events
|
|
712
|
+
|
|
713
|
+
4. **Automation:**
|
|
714
|
+
- Use PowerShell for repetitive tasks
|
|
715
|
+
- Document all scripts and procedures
|
|
716
|
+
- Implement scheduled tasks for maintenance
|
|
717
|
+
- Use configuration management tools
|
|
718
|
+
- Version control for scripts
|
|
719
|
+
|
|
720
|
+
5. **Backup and Recovery:**
|
|
721
|
+
- Regular system state backups
|
|
722
|
+
- Test restore procedures
|
|
723
|
+
- Document recovery procedures
|
|
724
|
+
- Offsite backup storage
|
|
725
|
+
- Verify backup integrity
|
|
726
|
+
|
|
727
|
+
## Anti-Patterns to Avoid
|
|
728
|
+
|
|
729
|
+
❌ **Using GUI for repetitive tasks** - Automate with PowerShell
|
|
730
|
+
❌ **Running everything as Domain Admin** - Use least privilege
|
|
731
|
+
❌ **No GPO testing** - Test in development OU first
|
|
732
|
+
❌ **Ignoring Windows updates** - Security vulnerabilities
|
|
733
|
+
❌ **Single domain controller** - No redundancy
|
|
734
|
+
❌ **Default administrator account enabled** - Security risk
|
|
735
|
+
❌ **No audit logging** - Cannot track security events
|
|
736
|
+
❌ **Complex OU structure** - Hard to manage GPOs
|
|
737
|
+
❌ **No documentation** - Tribal knowledge
|
|
738
|
+
❌ **Direct registry edits in production** - Use GPO when possible
|