Compare commits
56 Commits
db6579b98e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 040723cb62 | |||
| d3ca9ec5ab | |||
| 5ae531e693 | |||
| b69792bba3 | |||
| c92c11c2d9 | |||
| d6b5dc9d84 | |||
| 8daa5c88b8 | |||
| cfe5a04493 | |||
| b8dbd072e2 | |||
| c29038b12b | |||
| 2ed985d1fd | |||
| 0d6c20977d | |||
| 81482d242f | |||
| 052760c16a | |||
| 122fefc8fb | |||
| f744218d13 | |||
| 1264669091 | |||
| c4b0d84098 | |||
| d434a76112 | |||
| 8f97789f8c | |||
| ffb2a3990f | |||
| be3c1f3c2b | |||
| 873ea868b5 | |||
| b2896f3ec2 | |||
| 649bc1d7ed | |||
| 1ba829b916 | |||
| c0f0a3a006 | |||
| 5f6b018e24 | |||
| 4f9d2cbe45 | |||
| dec72e160b | |||
| 0f36436c77 | |||
| f3c52ffb6f | |||
| 9ec0266942 | |||
| 3a939bd601 | |||
| 14ba01f51b | |||
| 63e404a2f2 | |||
| 38c21cf5c2 | |||
| 0f35e8a69c | |||
| a931f3b3b9 | |||
| a798cfc7a3 | |||
| 8c38397073 | |||
| e0e34aa006 | |||
| ca2b58d465 | |||
| 7edb177425 | |||
| 2c23be7f56 | |||
| d9f5baa9d3 | |||
| cbc3947df0 | |||
| 7b5f382503 | |||
| 54bfe7bdc4 | |||
| 0fc4011e9a | |||
| 87d9592e7d | |||
| 8017dbdbad | |||
| f366b9f0a0 | |||
| b178fe4c58 | |||
| dbb53ba9fe | |||
| 7b16c4e3ae |
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/Dev/mysql_n8n_db/data
|
||||
/Dev/mysql_n8n_db/mysql-data
|
||||
Backup/Sophos/APS_HH.scx
|
||||
*.log
|
||||
*.log
|
||||
7
Backup/Gemini-Cli/Gemini-Cli.md
Normal file
7
Backup/Gemini-Cli/Gemini-Cli.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# gemini-cli-docker - Api Key
|
||||
AIzaSyD8wPpdT1UQboFvzYwxeI9zEcqoPU0-SVo
|
||||
|
||||
# Get your key from Google Cloud Console
|
||||
export GOOGLE_API_KEY="YOUR_API_KEY"
|
||||
export GOOGLE_GENAI_USE_VERTEXAI=true
|
||||
gemini
|
||||
6
Backup/Ispconfig/aps-isp01.md
Normal file
6
Backup/Ispconfig/aps-isp01.md
Normal file
@@ -0,0 +1,6 @@
|
||||
[INFO] Installation ready.
|
||||
[INFO] Your ISPConfig admin password is: QHkrBqD46fMqWtr neue : nqhHDGE5mDAmMpN
|
||||
[INFO] Your MySQL root password is: mp5dyLAzhyvbQyndweXd
|
||||
[INFO] Warning: Please delete the log files in /root/ispconfig-install-log/setup-* once you don't need them anymore because they contain your passwords!
|
||||
|
||||
|
||||
96
Backup/Sophos/APS_HH.tgb
Normal file
96
Backup/Sophos/APS_HH.tgb
Normal file
@@ -0,0 +1,96 @@
|
||||
# Do not edit this file. It is overwritten by VpnConf.
|
||||
# SIGNATURE MD5 = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
# Creation Date : 2025-12-22 at 13:34:35
|
||||
# Written by CyberoamServer XGS3300_RL01_SFOS 21.5.0 GA-Build171
|
||||
# Client Version :
|
||||
# CyberoamVPNClient :3.11.008
|
||||
# IKE Service :3.10.08,02.13
|
||||
|
||||
[General]
|
||||
Shared-SADB = Defined
|
||||
Retransmits = 5
|
||||
Exchange-max-time = 10
|
||||
Default-phase-1-lifetime = 46800,360:86400
|
||||
Bitblocking = 0
|
||||
Xauth-interval = 20
|
||||
DPD-interval = 30
|
||||
DPD_retrans = 7
|
||||
DPD_wait = 30
|
||||
|
||||
[Default-phase-2-lifetime]
|
||||
LIFE_TYPE = SECONDS
|
||||
LIFE_DURATION = 43200,360:86400
|
||||
|
||||
# ==================== PHASES 1 ====================
|
||||
|
||||
[Phase 1]
|
||||
185.164.230.171 = APS_HH-P1
|
||||
|
||||
[APS_HH-main-mode]
|
||||
DOI = IPSEC
|
||||
EXCHANGE_TYPE = ID_PROT
|
||||
Transforms = AES256-SHA2_256-GRP21
|
||||
|
||||
[AES256-SHA2_256-GRP21]
|
||||
ENCRYPTION_ALGORITHM = AES_CBC
|
||||
KEY_LENGTH = 256,128:256
|
||||
HASH_ALGORITHM = SHA2_256
|
||||
GROUP_DESCRIPTION = ECP521
|
||||
AUTHENTICATION_METHOD = PRE_SHARED
|
||||
Life = LIFE_MAIN_MODE
|
||||
|
||||
[APS_HH-P1]
|
||||
Phase = 1
|
||||
Family = IPV4
|
||||
Address = 185.164.230.171
|
||||
Transport = udp
|
||||
Configuration = APS_HH-main-mode
|
||||
Rconf = 1
|
||||
Authentication = "tZfNkccrTq49wyvsxLak86jF"
|
||||
Xauth = 0
|
||||
Xpopup = 1
|
||||
NATT_ENABLED = 1
|
||||
|
||||
|
||||
# ==================== PHASES 2 ====================
|
||||
|
||||
[Phase 2]
|
||||
Manual-connections = APS_HH-APS_HH1-P2
|
||||
|
||||
[APS_HH-APS_HH1-P2]
|
||||
Phase = 2
|
||||
ISAKMP-peer = APS_HH-P1
|
||||
Remote-ID = APS_HH1-remote-addr
|
||||
Configuration = APS_HH1-quick-mode
|
||||
AutoStart = 0
|
||||
USBStart = 0
|
||||
|
||||
# ==================== Ipsec ID ====================
|
||||
|
||||
[APS_HH1-remote-addr]
|
||||
ID-type = IPV4_ADDR_SUBNET
|
||||
Network = 0.0.0.0
|
||||
Netmask = 0.0.0.0
|
||||
|
||||
# ==================== TRANSFORMS ====================
|
||||
|
||||
[APS_HH1-quick-mode]
|
||||
DOI = IPSEC
|
||||
EXCHANGE_TYPE = QUICK_MODE
|
||||
Suites = APS_HH1-quick-mode-suite
|
||||
|
||||
[APS_HH1-quick-mode-suite]
|
||||
Protocols = TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN
|
||||
|
||||
[TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN]
|
||||
PROTOCOL_ID = IPSEC_ESP
|
||||
Transforms = TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN-XF
|
||||
|
||||
[TGBQM-ESP-AES256-SHA2_256-PFSGRP21-TUN-XF]
|
||||
TRANSFORM_ID = AES
|
||||
KEY_LENGTH = 256,128:256
|
||||
AUTHENTICATION_ALGORITHM = HMAC_SHA2_256
|
||||
GROUP_DESCRIPTION = ECP521
|
||||
ENCAPSULATION_MODE = TUNNEL
|
||||
Life = Default-phase-2-lifetime
|
||||
|
||||
15
Backup/Sophos/README
Normal file
15
Backup/Sophos/README
Normal file
@@ -0,0 +1,15 @@
|
||||
The archive file contains IPsec remote access configuration files in .scx and .tgb formats.
|
||||
|
||||
.scx: Contains the advanced settings of Sophos Connect client in addition
|
||||
to the other settings in the configuration. We recommend that
|
||||
you use this format.
|
||||
|
||||
The advanced settings provide extra protection, such as running
|
||||
AD logon scripts after the tunnel is established and offering
|
||||
multi-factor authentication. They also allow you to split the
|
||||
tunnel and connect the tunnel automatically.
|
||||
|
||||
These settings are available if your administrator has configured them.
|
||||
|
||||
.tgb: Use this for other IPsec remote access clients. If you use this
|
||||
format for Sophos Connect clients, you won’t get the advanced settings.
|
||||
11
Backup/Sophos/sophos connect-provision.pro
Normal file
11
Backup/Sophos/sophos connect-provision.pro
Normal file
@@ -0,0 +1,11 @@
|
||||
[
|
||||
{
|
||||
"gateway": "vpn.aps-hh.de",
|
||||
"user_portal_port": 7443,
|
||||
"otp": false,
|
||||
"auto_connect_host": "<Enter internal hostname or IP address>",
|
||||
"can_save_credentials": false,
|
||||
"check_remote_availability": false,
|
||||
"run_logon_script": true
|
||||
}
|
||||
]
|
||||
13
Conf/aps.local/APS-SMTP01 - Linux Conf.md
Normal file
13
Conf/aps.local/APS-SMTP01 - Linux Conf.md
Normal file
@@ -0,0 +1,13 @@
|
||||
## APS-PI001 - Linux Install
|
||||
#
|
||||
# IP
|
||||
10.102.1.201/24
|
||||
# GW
|
||||
10.102.1.1
|
||||
# DNS
|
||||
10.102.1.30
|
||||
10.102.1.31
|
||||
# Default User
|
||||
apslinux
|
||||
|
||||
|
||||
BIN
Conf/aps.local/weser_smtp_config.png
Normal file
BIN
Conf/aps.local/weser_smtp_config.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
3
Conf/home.meszely.eu/home.network.md
Normal file
3
Conf/home.meszely.eu/home.network.md
Normal file
@@ -0,0 +1,3 @@
|
||||
10.11.0.254 PandaNas wpanda - pan...#
|
||||
10.11.3.101
|
||||
10.11.0.252 PandaNasBackup wpanda - pan...#
|
||||
2
Conf/home.meszely.eu/home_assisstant.md
Normal file
2
Conf/home.meszely.eu/home_assisstant.md
Normal file
@@ -0,0 +1,2 @@
|
||||
n8n Token :
|
||||
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkZDllNTkxOTI4YmM0Yjg0OTgzNjVlYWQ3Njk2MDdjMCIsImlhdCI6MTc2NjkxNzg3MSwiZXhwIjoyMDgyMjc3ODcxfQ.eCwpJQZzsCFwHL7FD6e13kZT6m8uFuVQhMGfmNA5fD8
|
||||
7
Conf/home.meszely.eu/matrix.home.meszely.eu.md
Normal file
7
Conf/home.meszely.eu/matrix.home.meszely.eu.md
Normal file
@@ -0,0 +1,7 @@
|
||||
<<<<<<< HEAD
|
||||
# Matrix - n8n-bot - Accesstoken
|
||||
syt_Ym90LW44bg_RMzxOFQllPjSPsRWAHvb_0FeoGL
|
||||
=======
|
||||
# bot-n8n access token
|
||||
syt_Ym90LW44bg_AbviDZpPwRhLydqppDvv_2OfdD8
|
||||
>>>>>>> 2e10f37 (token)
|
||||
@@ -0,0 +1,9 @@
|
||||
docker run -d \
|
||||
--name pihole.home.meszely.eu \
|
||||
--network pihole \
|
||||
--ip 10.11.3.1 \
|
||||
--cap-add=NET_ADMIN \
|
||||
-e TZ=Europe/Berlin \
|
||||
-v /Docker/PIHOLE:/etc/pihole \
|
||||
--restart unless-stopped \
|
||||
pihole/pihole:latest
|
||||
1
Dev/fedora_toolbox/.env
Normal file
1
Dev/fedora_toolbox/.env
Normal file
@@ -0,0 +1 @@
|
||||
SSH_PASSWORD=virgI6774
|
||||
47
Dev/fedora_toolbox/Dockerfile
Normal file
47
Dev/fedora_toolbox/Dockerfile
Normal file
@@ -0,0 +1,47 @@
|
||||
# Fedora alapimage használata
|
||||
FROM fedora:latest
|
||||
|
||||
# Metaadatok az image-hez
|
||||
LABEL maintainer="Your Name"
|
||||
LABEL description="Fedora-based toolbox with SSH, nmap, and other utilities."
|
||||
|
||||
# Build-time argumentum a jelszóhoz
|
||||
ARG SSH_PASSWORD
|
||||
|
||||
# Szükséges csomagok telepítése
|
||||
RUN dnf -y update && \
|
||||
dnf -y install \
|
||||
openssh-server \
|
||||
sudo \
|
||||
nmap \
|
||||
iputils \
|
||||
procps-ng \
|
||||
net-tools && \
|
||||
dnf clean all
|
||||
|
||||
# SSH host kulcsok generálása
|
||||
RUN ssh-keygen -A
|
||||
|
||||
# 'wpanda' felhasználó létrehozása és jelszó beállítása
|
||||
# A jelszót a build-time argumentumból kapja
|
||||
RUN useradd -m -s /bin/bash wpanda && \
|
||||
echo "wpanda:${SSH_PASSWORD}" | chpasswd
|
||||
|
||||
# Jelszavas SSH bejelentkezés engedélyezése
|
||||
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
|
||||
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
|
||||
|
||||
# 'wpanda' felhasználó hozzáadása a sudo csoporthoz jelszó bekérése nélkül
|
||||
RUN echo 'wpanda ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
|
||||
|
||||
# Váltás a 'wpanda' felhasználóra
|
||||
USER wpanda
|
||||
|
||||
# Munkakönyvtár beállítása a felhasználó home könyvtárára
|
||||
WORKDIR /home/wpanda
|
||||
|
||||
# Az SSH port (22) megnyitása
|
||||
EXPOSE 22
|
||||
|
||||
# Az SSH szerver indítása előtérben
|
||||
CMD ["/usr/sbin/sshd", "-D"]
|
||||
22
Dev/fedora_toolbox/docker-compose.yml
Normal file
22
Dev/fedora_toolbox/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
toolbox:
|
||||
# Az image a jelenlegi könyvtárban lévő Dockerfile-ból épül
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
# Átadja az .env fájlból beolvasott SSH_PASSWORD változót a Dockerfile-nak
|
||||
- SSH_PASSWORD=${SSH_PASSWORD}
|
||||
# Konténer neve a könnyebb azonosíthatóságért
|
||||
container_name: fedora-toolbox
|
||||
# Hoszt port 2222 átirányítása a konténer 22-es portjára
|
||||
# Azért nem a 22-t használjuk a hoszton, hogy ne ütközzön a gép saját SSH szolgáltatásával
|
||||
ports:
|
||||
- "2222:22"
|
||||
# A külső 'data' könyvtár felcsatolása a konténeren belüli /home/wpanda helyre
|
||||
# A 'data' könyvtár a Dev/fedora_toolbox/data útvonalon található
|
||||
volumes:
|
||||
- ./data:/home/wpanda
|
||||
# A konténer automatikusan újraindul, hacsak nem állítod le kézzel
|
||||
restart: unless-stopped
|
||||
12
Dev/mysql/mysql_all/.env
Normal file
12
Dev/mysql/mysql_all/.env
Normal file
@@ -0,0 +1,12 @@
|
||||
# Docker-Compose Environment Variables for MySQL
|
||||
|
||||
# Path for MySQL data storage on the host machine
|
||||
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
||||
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||
MYSQL_DATA_PATH=/home/wpanda/mysql_data/sw_all_db
|
||||
|
||||
# MySQL Credentials
|
||||
MYSQL_ROOT_PASSWORD=virgI6774
|
||||
#MYSQL_DATABASE=switch_ip
|
||||
#MYSQL_USER=switchip
|
||||
#MYSQL_PASSWORD=virgI6774
|
||||
20
Dev/mysql/mysql_all/docker-compose.yml
Normal file
20
Dev/mysql/mysql_all/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
services:
|
||||
mysql_ip:
|
||||
image: mysql:latest
|
||||
container_name: mysql_all_db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
# MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
# MYSQL_USER: ${MYSQL_USER}
|
||||
# MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
ports:
|
||||
- '3306:3306'
|
||||
volumes:
|
||||
- ${MYSQL_DATA_PATH}:/var/lib/mysql
|
||||
networks:
|
||||
- shared-network
|
||||
|
||||
networks:
|
||||
shared-network:
|
||||
external: true
|
||||
12
Dev/mysql/mysql_n8n_db/.env
Normal file
12
Dev/mysql/mysql_n8n_db/.env
Normal file
@@ -0,0 +1,12 @@
|
||||
# Docker-Compose Environment Variables for MySQL
|
||||
|
||||
# Path for MySQL data storage on the host machine
|
||||
# Az adatbázis adatai a '/home/wpanda/mysql_data/n8n_db' mappába kerülnek mentésre.
|
||||
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||
MYSQL_DATA_PATH=/home/wpanda/mysql_data/n8n_db
|
||||
|
||||
# MySQL Credentials
|
||||
MYSQL_ROOT_PASSWORD=virgI6774
|
||||
MYSQL_DATABASE=n8ndb
|
||||
MYSQL_USER=n8n
|
||||
MYSQL_PASSWORD=virgI6774
|
||||
20
Dev/mysql/mysql_n8n_db/docker-compose.yml
Normal file
20
Dev/mysql/mysql_n8n_db/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
services:
|
||||
mysql_ip:
|
||||
image: mysql:latest
|
||||
container_name: mysql_n8n_db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
ports:
|
||||
- '3336:3306'
|
||||
volumes:
|
||||
- ${MYSQL_DATA_PATH}:/var/lib/mysql
|
||||
networks:
|
||||
- shared-network
|
||||
|
||||
networks:
|
||||
shared-network:
|
||||
external: true
|
||||
@@ -3,7 +3,7 @@
|
||||
# Path for MySQL data storage on the host machine
|
||||
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
||||
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||
MYSQL_DATA_PATH=/data/mysql_sw_fw
|
||||
MYSQL_DATA_PATH=/home/wpanda/mysql_data/sw_fw_db
|
||||
|
||||
# MySQL Credentials
|
||||
MYSQL_ROOT_PASSWORD=virgI6774
|
||||
25
Dev/mysql/mysql_switch_fw/README.md
Normal file
25
Dev/mysql/mysql_switch_fw/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# MySQL Docker Container
|
||||
|
||||
This directory contains the configuration for running MySQL in a Docker container.
|
||||
|
||||
## Configuration
|
||||
|
||||
The configuration is managed through the `.env` file. You can change the following variables:
|
||||
|
||||
- `MYSQL_DATA_PATH`: The local directory where the database data will be stored. By default, it's set to `./data` within this directory.
|
||||
- `MYSQL_ROOT_PASSWORD`: The root password for the MySQL instance.
|
||||
- `MYSQL_DATABASE`: The name of the database to be created on startup.
|
||||
- `MYSQL_USER`: The username for a non-root user.
|
||||
- `MYSQL_PASSWORD`: The password for the non-root user.
|
||||
|
||||
## Usage
|
||||
|
||||
To start the container, navigate to this directory (`Dev/mysql`) and run the following command:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
To stop the container:
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
@@ -3,7 +3,7 @@
|
||||
# Path for MySQL data storage on the host machine
|
||||
# Az adatbázis adatai a 'Dev/mysql/data' mappába kerülnek mentésre.
|
||||
# Ezt az elérési utat tetszés szerint módosíthatod.
|
||||
MYSQL_DATA_PATH=/data/mysql_sw_ip
|
||||
MYSQL_DATA_PATH=/home/wpanda/mysql_data/sw_ip_db
|
||||
|
||||
# MySQL Credentials
|
||||
MYSQL_ROOT_PASSWORD=virgI6774
|
||||
20
Dev/mysql/mysql_switch_ip/CREATE TABLE switches_ip.md
Normal file
20
Dev/mysql/mysql_switch_ip/CREATE TABLE switches_ip.md
Normal file
@@ -0,0 +1,20 @@
|
||||
CREATE TABLE clients (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
switch_name VARCHAR(255) NOT NULL COMMENT 'A switch hosztneve, amelyhez a kliens csatlakozik',
|
||||
mac_address VARCHAR(17) NOT NULL UNIQUE COMMENT 'A kliens MAC címe (egyedi azonosító)',
|
||||
interface VARCHAR(50) NOT NULL COMMENT 'A switch interfésze, amelyhez a kliens csatlakozik (pl. 1/1/3)',
|
||||
vlan VARCHAR(10) NOT NULL COMMENT 'A kliens VLAN azonosítója',
|
||||
ip_address VARCHAR(45) NOT NULL COMMENT 'A kliens IP címe (IPv4 vagy IPv6)',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT 'A rekord létrehozásának időpontja',
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'A rekord utolsó frissítésének időpontja'
|
||||
) COMMENT='Hálózati kliensek adatainak tárolása switchenként';
|
||||
|
||||
**Magyarázat:**
|
||||
|
||||
* `id INT AUTO_INCREMENT PRIMARY KEY`: Egy automatikusan növekvő egyedi azonosító minden bejegyzéshez.
|
||||
* `switch_name VARCHAR(255) NOT NULL`: A switch neve, amihez a kliens csatlakozik.
|
||||
* `mac_address VARCHAR(17) NOT NULL UNIQUE`: A kliens MAC címe. `VARCHAR(17)` elég a `XX:XX:XX:XX:XX:XX` formátumhoz, és `UNIQUE` constraint-et is kapott, mivel ez az elsődleges egyedi azonosítója egy hálózati kliensnek.
|
||||
* `interface VARCHAR(50) NOT NULL`: Az interfész, amelyhez a kliens csatlakozik.
|
||||
* `vlan VARCHAR(10) NOT NULL`: A VLAN, amihez a kliens tartozik. `VARCHAR`-ként kezeltem, hogy rugalmasabb legyen, ha esetleg nem csak számok lennének.
|
||||
* `ip_address VARCHAR(45) NOT NULL`: A kliens IP címe.
|
||||
* `created_at` és `updated_at`: Automatikus időbélyegek a bejegyzés létrehozására és utolsó módosítására.
|
||||
25
Dev/mysql/mysql_switch_ip/README.md
Normal file
25
Dev/mysql/mysql_switch_ip/README.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# MySQL Docker Container
|
||||
|
||||
This directory contains the configuration for running MySQL in a Docker container.
|
||||
|
||||
## Configuration
|
||||
|
||||
The configuration is managed through the `.env` file. You can change the following variables:
|
||||
|
||||
- `MYSQL_DATA_PATH`: The local directory where the database data will be stored. By default, it's set to `./data` within this directory.
|
||||
- `MYSQL_ROOT_PASSWORD`: The root password for the MySQL instance.
|
||||
- `MYSQL_DATABASE`: The name of the database to be created on startup.
|
||||
- `MYSQL_USER`: The username for a non-root user.
|
||||
- `MYSQL_PASSWORD`: The password for the non-root user.
|
||||
|
||||
## Usage
|
||||
|
||||
To start the container, navigate to this directory (`Dev/mysql`) and run the following command:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
To stop the container:
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
@@ -1,2 +0,0 @@
|
||||
# Docker run ID
|
||||
getent group docker | cut -d: -f3
|
||||
@@ -1,17 +0,0 @@
|
||||
# Use the official n8n image as a base
|
||||
FROM n8nio/n8n:latest
|
||||
|
||||
# Switch to the root user to install packages
|
||||
USER root
|
||||
|
||||
# Install docker-cli using the apk package manager
|
||||
RUN apk add --no-cache docker-cli
|
||||
|
||||
# Install Python, pip, and required build dependencies
|
||||
RUN apk add --no-cache python3 py3-pip build-base
|
||||
|
||||
# Install required Python packages
|
||||
RUN pip install netmiko --break-system-packages
|
||||
|
||||
# Switch back to the non-privileged node user
|
||||
USER node
|
||||
@@ -1,82 +0,0 @@
|
||||
import json
|
||||
|
||||
# A bejövő adatok az n8n-től. A $items() függvénnyel hivatkozunk
|
||||
# a korábbi node-okra a nevük alapján.
|
||||
# Cseréld le a 'MySQL_Node_Neve' és 'Élő_Adat_Node_Neve' neveket
|
||||
# a te munkafolyamatodban lévő node-ok tényleges nevére!
|
||||
# Például:
|
||||
# db_clients_items = $items("MySQL Client Fetch")
|
||||
# live_clients_items = $items("Code (IP Scan Script)")
|
||||
|
||||
# Fontos: Ha az n8n Code node-jában futtatod, a $items funkciót közvetlenül használhatod.
|
||||
# Ha külső szkriptként futtatod az "Execute Command" node-ból, akkor a bemenetet
|
||||
# másképp kell kezelni (pl. parancssori argumentumként JSON stringet).
|
||||
# Ez a kód az n8n Code node Python módjához készült.
|
||||
|
||||
db_clients_items = $items("MySQL_Node_Neve") # Ezt cseréld a MySQL node-od nevére
|
||||
live_clients_items = $items("Élő_Adat_Node_Neve") # Ezt cseréld az élő adatokat adó Code node-od nevére
|
||||
|
||||
|
||||
# Hozzuk létre a MAC cím alapján kereshető adathalmazokat
|
||||
# Ellenőrizzük, hogy a bemeneti lista nem üres-e
|
||||
db_clients = {}
|
||||
if db_clients_items:
|
||||
db_clients = {item.json['mac_address']: item.json for item in db_clients_items}
|
||||
|
||||
live_clients = {}
|
||||
if live_clients_items:
|
||||
live_clients = {item.json['mac_address']: item.json for item in live_clients_items}
|
||||
|
||||
|
||||
differences = []
|
||||
|
||||
# 1. Új kliensek keresése (amik az élő adatokban vannak, de a DB-ben nem)
|
||||
for mac, client_data in live_clients.items():
|
||||
if mac not in db_clients:
|
||||
differences.append({
|
||||
"change_type": "ÚJ KLIENS",
|
||||
"client": client_data
|
||||
})
|
||||
|
||||
# 2. Eltávolított kliensek keresése (amik a DB-ben vannak, de az élő adatokban már nem)
|
||||
for mac, client_data in db_clients.items():
|
||||
if mac not in live_clients:
|
||||
differences.append({
|
||||
"change_type": "ELTÁVOLÍTOTT KLIENS",
|
||||
"client": client_data
|
||||
})
|
||||
|
||||
# 3. Változások keresése (pl. megváltozott az IP címe)
|
||||
# Ez egy egyszerűbb példa, ami csak az IP-t figyeli.
|
||||
# Ha több mezőt is figyelni akarsz, bővítsd ezt a részt.
|
||||
for mac, live_data in live_clients.items():
|
||||
if mac in db_clients:
|
||||
db_data = db_clients[mac]
|
||||
# Összehasonlítjuk az IP címet és a switch nevét
|
||||
if live_data.get('ip_address') != db_data.get('ip_address') or \
|
||||
live_data.get('switch_name') != db_data.get('switch_name') or \
|
||||
live_data.get('interface') != db_data.get('interface') or \
|
||||
live_data.get('vlan') != db_data.get('vlan'):
|
||||
|
||||
# Gyűjtsük össze a változásokat
|
||||
changes = {}
|
||||
if live_data.get('ip_address') != db_data.get('ip_address'):
|
||||
changes['ip_address'] = {'from': db_data.get('ip_address'), 'to': live_data.get('ip_address')}
|
||||
if live_data.get('switch_name') != db_data.get('switch_name'):
|
||||
changes['switch_name'] = {'from': db_data.get('switch_name'), 'to': live_data.get('switch_name')}
|
||||
if live_data.get('interface') != db_data.get('interface'):
|
||||
changes['interface'] = {'from': db_data.get('interface'), 'to': live_data.get('interface')}
|
||||
if live_data.get('vlan') != db_data.get('vlan'):
|
||||
changes['vlan'] = {'from': db_data.get('vlan'), 'to': live_data.get('vlan')}
|
||||
|
||||
differences.append({
|
||||
"change_type": "MEGVÁLTOZOTT KLIENS",
|
||||
"client_mac": mac,
|
||||
"changes": changes,
|
||||
"current_data": live_data
|
||||
})
|
||||
|
||||
# A 'return' paranccsal adjuk vissza a különbségeket.
|
||||
# Ha a 'differences' lista üres, a workflow ezen az ágon megáll (ha nincsenek további node-ok,
|
||||
# amik üres bemenettel is futnak).
|
||||
return differences
|
||||
@@ -1,24 +0,0 @@
|
||||
services:
|
||||
n8n:
|
||||
container_name: n8n
|
||||
build: .
|
||||
user: "node:1001"
|
||||
restart: always
|
||||
ports:
|
||||
- "127.0.0.1:5678:5678"
|
||||
environment:
|
||||
- TZ=Europe/Hamburg
|
||||
volumes:
|
||||
- /mnt/c/Tools/docker/n8n:/home/node/.n8n
|
||||
- /var/run/docker.sock:/var/run/docker.sock:Z
|
||||
- /mnt/c/Users/i.meszely/Gitea/WPanda/Dev:/home/node/dev
|
||||
networks:
|
||||
- shared-network
|
||||
|
||||
volumes:
|
||||
n8n_data:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
shared-network:
|
||||
external: true
|
||||
@@ -1,11 +0,0 @@
|
||||
docker run -d \
|
||||
--name n8n \
|
||||
--user "node:1001" \
|
||||
--restart always \
|
||||
-p 127.0.0.1:5678:5678 \
|
||||
-e TZ=Europe/Hamburg \
|
||||
-v /mnt/c/docker/n8n:/home/node/.n8n \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
--network n8n_n8n_network \
|
||||
--ip 172.20.0.100 \
|
||||
n8n
|
||||
@@ -1,105 +0,0 @@
|
||||
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import csv
|
||||
from datetime import datetime
|
||||
from netmiko import ConnectHandler
|
||||
from netmiko.exceptions import NetmikoTimeoutException, NetmikoAuthenticationException
|
||||
|
||||
def get_aruba_firmware(host, username, password):
|
||||
"""
|
||||
Connects to an Aruba switch, retrieves the hostname and firmware version.
|
||||
Returns a dictionary with the collected data.
|
||||
"""
|
||||
device = {
|
||||
'device_type': 'aruba_aoscx',
|
||||
'host': host,
|
||||
'username': username,
|
||||
'password': password,
|
||||
}
|
||||
|
||||
print(f"Csatlakozás a(z) {host} eszközhöz...")
|
||||
try:
|
||||
with ConnectHandler(**device) as net_connect:
|
||||
print(f"Sikeres csatlakozás a(z) {host} eszközhöz. Firmware verzió lekérdezése...")
|
||||
|
||||
# Hostname lekérdezése a promptból
|
||||
prompt = net_connect.find_prompt()
|
||||
switch_hostname = prompt.strip('#> ')
|
||||
|
||||
# Firmware verzió lekérdezése
|
||||
output = net_connect.send_command('show version')
|
||||
|
||||
firmware_version = "N/A"
|
||||
# Reguláris kifejezés a firmware verzió megtalálásához
|
||||
match = re.search(r"Version\s+:\s+(.*)", output)
|
||||
if match:
|
||||
firmware_version = match.group(1).strip()
|
||||
|
||||
return {
|
||||
'switch_name': switch_hostname,
|
||||
'ip_address': host,
|
||||
'firmware_version': firmware_version
|
||||
}
|
||||
|
||||
except NetmikoTimeoutException:
|
||||
print(f"Hiba: Időtúllépés a(z) {host} eszközhöz való csatlakozáskor.")
|
||||
return {'switch_name': 'N/A', 'ip_address': host, 'firmware_version': 'Timeout'}
|
||||
except NetmikoAuthenticationException:
|
||||
print(f"Hiba: Sikertelen hitelesítés a(z) {host} eszközön.")
|
||||
return {'switch_name': 'N/A', 'ip_address': host, 'firmware_version': 'Auth Failed'}
|
||||
except Exception as e:
|
||||
print(f"Váratlan hiba történt a(z) {host} feldolgozása közben: {e}")
|
||||
return {'switch_name': 'N/A', 'ip_address': host, 'firmware_version': f'Error: {e}'}
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Konfigurációs fájl beolvasása
|
||||
try:
|
||||
with open('config.json', 'r') as f:
|
||||
config = json.load(f)
|
||||
except FileNotFoundError:
|
||||
print("Hiba: A 'config.json' fájl nem található.")
|
||||
exit()
|
||||
except json.JSONDecodeError:
|
||||
print("Hiba: A 'config.json' fájl formátuma érvénytelen.")
|
||||
exit()
|
||||
|
||||
SWITCH_IPS = config.get("switch_ips", [])
|
||||
USERNAME = config.get("username")
|
||||
PASSWORD = config.get("password")
|
||||
|
||||
if not all([SWITCH_IPS, USERNAME, PASSWORD]):
|
||||
print("Hiba: A 'config.json' fájl hiányos. Tartalmaznia kell 'switch_ips', 'username', és 'password' kulcsokat.")
|
||||
exit()
|
||||
|
||||
# Kimeneti mappa
|
||||
OUTPUT_DIR = "results"
|
||||
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
||||
timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
|
||||
CSV_FILENAME = os.path.join(OUTPUT_DIR, f"aruba_firmware_versions_{timestamp}.csv")
|
||||
|
||||
all_switches_firmware = []
|
||||
|
||||
for ip in SWITCH_IPS:
|
||||
print(f"\n--- Feldolgozás: {ip} ---")
|
||||
firmware_data = get_aruba_firmware(ip, USERNAME, PASSWORD)
|
||||
if firmware_data:
|
||||
all_switches_firmware.append(firmware_data)
|
||||
print(f"Sikeresen lekérdezve: {firmware_data['switch_name']} ({firmware_data['ip_address']}) - Verzió: {firmware_data['firmware_version']}")
|
||||
|
||||
if all_switches_firmware:
|
||||
print(f"\nÖsszesen {len(all_switches_firmware)} switch adat gyűjtve. Mentés a(z) {CSV_FILENAME} fájlba...")
|
||||
|
||||
fieldnames = ['switch_name', 'ip_address', 'firmware_version']
|
||||
|
||||
try:
|
||||
with open(CSV_FILENAME, 'w', newline='', encoding='utf-8') as csvfile:
|
||||
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
||||
writer.writeheader()
|
||||
writer.writerows(all_switches_firmware)
|
||||
print(f"Sikeres mentés a(z) '{CSV_FILENAME}' fájlba.")
|
||||
except IOError as e:
|
||||
print(f"Hiba történt a CSV fájl írása közben: {e}")
|
||||
else:
|
||||
print("\nEgyetlen switch-ről sem sikerült adatot gyűjteni.")
|
||||
29
Dev/n8n/panda_n8n/Dockerfile
Normal file
29
Dev/n8n/panda_n8n/Dockerfile
Normal file
@@ -0,0 +1,29 @@
|
||||
# Start from a standard Fedora base image
|
||||
FROM fedora:latest
|
||||
|
||||
# Install necessary dependencies using dnf
|
||||
# -y flag to auto-confirm.
|
||||
# We need nodejs (which includes npm) and python3 with pip.
|
||||
RUN dnf install -y nodejs python3 python3-pip && dnf clean all
|
||||
|
||||
# Now use npm to install n8n globally
|
||||
RUN npm install -g n8n
|
||||
|
||||
# Create a non-root user 'node' for security
|
||||
RUN groupadd -r node && useradd -r -g node -d /home/node -m -s /bin/bash node
|
||||
|
||||
# Create the directory for n8n's data and set permissions
|
||||
RUN mkdir /home/node/.n8n && \
|
||||
chown -R node:node /home/node/.n8n
|
||||
|
||||
# Switch to the non-root 'node' user
|
||||
USER node
|
||||
|
||||
# Set the working directory to the n8n data directory
|
||||
WORKDIR /home/node/.n8n
|
||||
|
||||
# Expose the n8n port
|
||||
EXPOSE 5678
|
||||
|
||||
# Set the default command to start n8n
|
||||
CMD [ "n8n" ]
|
||||
22
Dev/n8n/panda_n8n/docker-compose.yml
Normal file
22
Dev/n8n/panda_n8n/docker-compose.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
services:
|
||||
n8n:
|
||||
# image: n8nio/n8n:latest
|
||||
build: .
|
||||
restart: always
|
||||
ports:
|
||||
- "5678:5678"
|
||||
volumes:
|
||||
- ./n8n-data:/home/node/.n8n
|
||||
- ./n8n-scripts:/home/node/.n8n/scripts
|
||||
environment:
|
||||
- N8N_HOST=${N8N_HOST:-localhost}
|
||||
- N8N_PORT=5678
|
||||
- N8N_PROTOCOL=${N8N_PROTOCOL:-http}
|
||||
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
|
||||
- NODES_EXCLUDE="[]"
|
||||
# Ha használsz SSL/TLS-t, akkor ezeket is be kell állítanod
|
||||
# - N8N_BASIC_AUTH_ACTIVE=true
|
||||
# - N8N_BASIC_AUTH_USER=user
|
||||
# - N8N_BASIC_AUTH_PASSWORD=password
|
||||
labels:
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
3
Dev/n8n/panda_n8n/n8n-data/config
Normal file
3
Dev/n8n/panda_n8n/n8n-data/config
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"encryptionKey": "gJNeJ70E+q4GQeVLEJKttR199XSA0mbg"
|
||||
}
|
||||
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite
Normal file
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-shm
Normal file
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-shm
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-wal
Normal file
BIN
Dev/n8n/panda_n8n/n8n-data/database.sqlite-wal
Normal file
Binary file not shown.
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog-1.log
Normal file
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog-1.log
Normal file
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog.log
Normal file
0
Dev/n8n/panda_n8n/n8n-data/n8nEventLog.log
Normal file
5
Dev/n8n/panda_n8n/n8n-data/nodes/package.json
Normal file
5
Dev/n8n/panda_n8n/n8n-data/nodes/package.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "installed-nodes",
|
||||
"private": true,
|
||||
"dependencies": {}
|
||||
}
|
||||
@@ -1,9 +1,6 @@
|
||||
import os
|
||||
import re
|
||||
from datetime import datetime
|
||||
import json
|
||||
import requests
|
||||
|
||||
import sys
|
||||
from netmiko import ConnectHandler
|
||||
from netmiko.exceptions import NetmikoTimeoutException, NetmikoAuthenticationException
|
||||
|
||||
@@ -20,10 +17,10 @@ def get_aruba_clients(host, username, password):
|
||||
}
|
||||
|
||||
all_clients_data = []
|
||||
print(f"Csatlakozás a(z) {host} eszközhöz...")
|
||||
print(f"Csatlakozás a(z) {host} eszközhöz...", file=sys.stderr)
|
||||
try:
|
||||
with ConnectHandler(**device) as net_connect:
|
||||
print("Sikeres csatlakozás. Adatok lekérdezése...")
|
||||
print("Sikeres csatlakozás. Adatok lekérdezése...", file=sys.stderr)
|
||||
|
||||
prompt = net_connect.find_prompt()
|
||||
switch_hostname = prompt.strip('#> ')
|
||||
@@ -48,86 +45,53 @@ def get_aruba_clients(host, username, password):
|
||||
all_clients_data.append(client_data)
|
||||
return all_clients_data
|
||||
|
||||
print("Hiba: A parancs kimenete nem volt a várt formátumban.")
|
||||
print("Hiba: A parancs kimenete nem volt a várt formátumban.", file=sys.stderr)
|
||||
return None
|
||||
|
||||
except NetmikoTimeoutException:
|
||||
print(f"Hiba: Időtúllépés a(z) {host} eszközhöz való csatlakozáskor.")
|
||||
print(f"Hiba: Időtúllépés a(z) {host} eszközhöz való csatlakozáskor.", file=sys.stderr)
|
||||
return None
|
||||
except NetmikoAuthenticationException:
|
||||
print(f"Hiba: Sikertelen hitelesítés a(z) {host} eszközön. Ellenőrizd a jelszót.")
|
||||
print(f"Hiba: Sikertelen hitelesítés a(z) {host} eszközön. Ellenőrizd a jelszót.", file=sys.stderr)
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Váratlan hiba történt: {e}")
|
||||
print(f"Váratlan hiba történt: {e}", file=sys.stderr)
|
||||
return None
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Konfigurációs fájl beolvasása
|
||||
try:
|
||||
with open('config.json', 'r') as f:
|
||||
config = json.load(f)
|
||||
except FileNotFoundError:
|
||||
print("Hiba: A 'config.json' fájl nem található.", file=sys.stderr)
|
||||
exit(1)
|
||||
except json.JSONDecodeError:
|
||||
print("Hiba: A 'config.json' fájl formátuma érvénytelen.", file=sys.stderr)
|
||||
exit(1)
|
||||
|
||||
# --- IDE DEFINIÁLD A SWITCH-EK IP CÍMEIT ---
|
||||
SWITCH_IPS = config.get("switch_ips", [])
|
||||
USERNAME = config.get("username")
|
||||
PASSWORD = config.get("password")
|
||||
|
||||
SWITCH_IPS = [
|
||||
|
||||
"10.220.1.84", # NET-SW01
|
||||
"10.220.1.85", # NET-SW02
|
||||
"10.220.1.86", # NET-SW04
|
||||
"10.220.1.87", # NET-SW05
|
||||
"10.220.1.88", # NET-SW06
|
||||
"10.220.1.90", # NET-SW07
|
||||
"10.220.1.91", # NET-SW08
|
||||
"10.220.1.92", # NET-SW09
|
||||
"10.220.1.93", # NET-SW10
|
||||
"10.220.1.94", # NET-SW11
|
||||
"10.220.1.96", # NET-SW13
|
||||
# "10.220.1.96", # NET-SW14
|
||||
"10.220.1.99", # NET-SW17
|
||||
|
||||
]
|
||||
|
||||
USERNAME = os.getenv('ARUBA_USER', 'svc.operator') # Felhasználónév környezeti változóból, alapértelmezett értékkel
|
||||
if not USERNAME:
|
||||
print("Hiba: Az ARUBA_USER környezeti változó nincs beállítva.")
|
||||
exit()
|
||||
if not all([SWITCH_IPS, USERNAME, PASSWORD]):
|
||||
print("Hiba: A 'config.json' fájl hiányos. Tartalmaznia kell 'switch_ips', 'username', és 'password' kulcsokat.", file=sys.stderr)
|
||||
exit(1)
|
||||
|
||||
PASSWORD = os.getenv('ARUBA_PASSWORD')
|
||||
if not PASSWORD:
|
||||
print("Hiba: Az ARUBA_PASSWORD környezeti változó nincs beállítva.")
|
||||
exit()
|
||||
|
||||
N8N_WEBHOOK_URL = os.getenv('N8N_WEBHOOK_URL')
|
||||
if not N8N_WEBHOOK_URL:
|
||||
print("Hiba: Az N8N_WEBHOOK_URL környezeti változó nincs beállítva.")
|
||||
exit()
|
||||
|
||||
|
||||
all_switches_clients = []
|
||||
|
||||
|
||||
|
||||
for ip in SWITCH_IPS:
|
||||
|
||||
print(f"\n--- Feldolgozás: {ip} ---")
|
||||
|
||||
print(f"\n--- Feldolgozás: {ip} ---", file=sys.stderr)
|
||||
clients_from_one_switch = get_aruba_clients(ip, USERNAME, PASSWORD)
|
||||
|
||||
if clients_from_one_switch:
|
||||
|
||||
all_switches_clients.extend(clients_from_one_switch)
|
||||
|
||||
print(f"Sikeresen lekérdezve {len(clients_from_one_switch)} kliens a(z) {ip} switch-ről.")
|
||||
|
||||
print(f"Sikeresen lekérdezve {len(clients_from_one_switch)} kliens a(z) {ip} switch-ről.", file=sys.stderr)
|
||||
else:
|
||||
print(f"Nem sikerült adatot lekérdezni a(z) {ip} switch-ről.", file=sys.stderr)
|
||||
|
||||
print(f"Nem sikerült adatot lekérdezni a(z) {ip} switch-ről.")
|
||||
# Ha nem sikerült adatot gyűjteni, jelezzük a stderr-en
|
||||
if not all_switches_clients:
|
||||
print("\nEgyetlen switch-ről sem sikerült adatot gyűjteni.", file=sys.stderr)
|
||||
|
||||
# --- Fő kimenet: JSON a stdout-ra ---
|
||||
print(json.dumps(all_switches_clients, indent=2))
|
||||
|
||||
|
||||
if all_switches_clients:
|
||||
print(f"\nÖsszesen {len(all_switches_clients)} kliens adat gyűjtve. Küldés az n8n webhookra...")
|
||||
try:
|
||||
proxies = { 'http': None, 'https': None }
|
||||
response = requests.post(N8N_WEBHOOK_URL, json=all_switches_clients, proxies=proxies)
|
||||
response.raise_for_status() # Hibát dob, ha a státuszkód 4xx vagy 5xx
|
||||
print(f"Sikeresen elküldve {len(all_switches_clients)} kliens adat az n8n webhookra. Státusz: {response.status_code}")
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"Hiba történt az adatok n8n webhookra küldése közben: {e}")
|
||||
else:
|
||||
print("\nEgyetlen switch-ről sem sikerült adatot gyűjteni.")
|
||||
28
Dev/n8n/panda_n8n_execute_command/docker-compose.yml
Normal file
28
Dev/n8n/panda_n8n_execute_command/docker-compose.yml
Normal file
@@ -0,0 +1,28 @@
|
||||
services:
|
||||
n8n:
|
||||
image: n8nio/n8n:latest
|
||||
container_name: panda_n8n
|
||||
restart: always
|
||||
ports:
|
||||
- "5678:5678"
|
||||
volumes:
|
||||
- ./n8n-data:/home/node/.n8n
|
||||
- ./n8n-scripts:/home/node/scripts
|
||||
environment:
|
||||
- N8N_HOST=${N8N_HOST:-localhost}
|
||||
- N8N_PORT=5678
|
||||
- N8N_PROTOCOL=${N8N_PROTOCOL:-http}
|
||||
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
|
||||
- NODES_EXCLUDE="[]"
|
||||
# Ha használsz SSL/TLS-t, akkor ezeket is be kell állítanod
|
||||
# - N8N_BASIC_AUTH_ACTIVE=true
|
||||
# - N8N_BASIC_AUTH_USER=user
|
||||
# - N8N_BASIC_AUTH_PASSWORD=password
|
||||
networks:
|
||||
- shared-network
|
||||
labels:
|
||||
- com.centurylinklabs.watchtower.enable=true
|
||||
|
||||
networks:
|
||||
shared-network:
|
||||
external: true
|
||||
3
Dev/n8n/panda_n8n_execute_command/n8n-data/config
Normal file
3
Dev/n8n/panda_n8n_execute_command/n8n-data/config
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"encryptionKey": "gJNeJ70E+q4GQeVLEJKttR199XSA0mbg"
|
||||
}
|
||||
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite
Normal file
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-shm
Normal file
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-shm
Normal file
Binary file not shown.
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-wal
Normal file
BIN
Dev/n8n/panda_n8n_execute_command/n8n-data/database.sqlite-wal
Normal file
Binary file not shown.
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "installed-nodes",
|
||||
"private": true,
|
||||
"dependencies": {}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
import json
|
||||
|
||||
# Az n8n az 'items' listában adja át a bejövő adatokat.
|
||||
# Nekünk az első elem kell, ami az Execute Command kimenete.
|
||||
input_item = items[0]
|
||||
|
||||
# Kivesszük a 'stdout' mezőt, ami a JSON-t tartalmazza szövegként.
|
||||
stdout_string = input_item.json['stdout']
|
||||
|
||||
# A `json.loads()` paranccsal a szöveget átalakítjuk egy Python listává,
|
||||
# ami dictionary-ket tartalmaz.
|
||||
switches_list = json.loads(stdout_string)
|
||||
|
||||
# Visszaadjuk a listát. Az n8n a Code node kimenetén ezt automatikusan
|
||||
# szét fogja bontani különálló elemekre (item-ekre).
|
||||
return switches_list
|
||||
@@ -1,9 +0,0 @@
|
||||
# PostgreSQL Database Settings
|
||||
POSTGRES_DB=n8n
|
||||
POSTGRES_USER=n8nuser
|
||||
POSTGRES_PASSWORD=virgI6774
|
||||
|
||||
# n8n Subdomain and Domain Settings
|
||||
# Example: n8n.example.com
|
||||
DOMAIN_NAME=home.meszely.eu
|
||||
SUBDOMAIN=n8n
|
||||
@@ -1,15 +0,0 @@
|
||||
# Start from the official n8n image
|
||||
FROM n8nio/n8n
|
||||
|
||||
# Switch to root user to install system packages
|
||||
USER root
|
||||
|
||||
# Install Python and pip for Alpine Linux
|
||||
# hadolint ignore=DL3018
|
||||
RUN apk add --no-cache python3 py3-pip
|
||||
|
||||
# Install the gemini python package
|
||||
RUN pip install --break-system-packages google-generativeai
|
||||
|
||||
# Switch back to the non-root user that n8n uses
|
||||
USER node
|
||||
@@ -1,67 +0,0 @@
|
||||
# n8n, Gemini-CLI és PostgreSQL Docker Compose Projekt
|
||||
|
||||
## Áttekintés
|
||||
|
||||
Ez a projekt egy Docker Compose alapú környezet, amely az alábbi szolgáltatásokat integrálja:
|
||||
* **n8n:** Egy erőteljes workflow automatizálási eszköz.
|
||||
* **Gemini-CLI:** Egy egyedi Docker image, amely a Google Gemini mesterséges intelligencia modelljével való interakciót teszi lehetővé. Ez a konténer szolgálhat "intelligens agyként" az n8n workflow-k számára.
|
||||
* **PostgreSQL:** Egy robusztus relációs adatbázis, amelyet az n8n használ a saját adatainak tárolására, de természetesen a workflow-k is elérhetik.
|
||||
|
||||
A szolgáltatások egy közös Docker hálózaton keresztül kommunikálnak egymással, biztosítva a zökkenőmentes adatcserét és funkcionális bővíthetőséget.
|
||||
|
||||
## Architektúra
|
||||
|
||||
* **`db` service (PostgreSQL):** Tárolja az n8n működéséhez szükséges adatokat, valamint tetszőleges adatok kezelésére is alkalmas a workflow-kból.
|
||||
* **`n8n` service:** A workflow-k futtatásáért felelős. Hozzáfér a PostgreSQL adatbázishoz, és képes parancsokat futtatni a `gemini-cli` konténerben.
|
||||
* **`gemini-cli` service:** Tartalmazza a Gemini AI modellel való interakcióhoz szükséges logikát (pl. Python szkripteket). Az n8n workflow-k ezen keresztül tudnak mesterséges intelligencia alapú feladatokat végezni (pl. szövegelemzés, generálás, adatok strukturálása).
|
||||
|
||||
A szolgáltatások közötti kommunikáció a `n8n_network` nevű bridge hálózaton keresztül történik, a konténernevek (pl. `db`, `gemini-cli`) használatával. Az adatperzisztenciát a `postgres_data` és `n8n_data` volume-ok, míg a fájlcserét az `n8n` és `gemini-cli` között a `shared_data` volume biztosítja.
|
||||
|
||||
## Előfeltételek
|
||||
|
||||
A projekt futtatásához szükséged lesz:
|
||||
* [Docker](https://www.docker.com/get-started)
|
||||
* [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
|
||||
## Telepítés és Indítás
|
||||
|
||||
1. **Navigálj a projekt könyvtárába:**
|
||||
```bash
|
||||
cd Dev/n8n_gemini_db
|
||||
```
|
||||
|
||||
2. **Konfiguráld az `.env` fájlt:**
|
||||
Nyisd meg a `.env` fájlt, és módosítsd benne a placeholder értékeket (pl. `POSTGRES_PASSWORD`, `DOMAIN_NAME`, `SUBDOMAIN`) a saját igényeid szerint. **Fontos:** Ezt a fájlt soha ne tedd Git repository-ba éles adatokkal!
|
||||
|
||||
3. **Add hozzá a `gemini-cli` logikádat:**
|
||||
* Helyezd el a `gemini-cli` eszközöd Python szkriptjeit (vagy egyéb futtatható fájljait) a `gemini-cli/` alkönyvtárba.
|
||||
* A szkriptek által igényelt Python könyvtárakat sorold fel a `gemini-cli/requirements.txt` fájlban.
|
||||
|
||||
4. **Építsd fel és indítsd el a konténereket:**
|
||||
Futtasd az alábbi parancsot a projekt gyökérkönyvtárában:
|
||||
```bash
|
||||
docker-compose up --build -d
|
||||
```
|
||||
* A `--build` kapcsoló biztosítja, hogy a `gemini-cli` image felépüljön a `Dockerfile` alapján.
|
||||
* A `-d` kapcsolóval a konténerek a háttérben fognak futni.
|
||||
|
||||
## Használat
|
||||
|
||||
1. **n8n Felület elérése:**
|
||||
Az n8n felhasználói felülete általában a `http://localhost:5678` címen (vagy az `.env` fájlban beállított `WEBHOOK_URL` alapján) érhető el.
|
||||
|
||||
2. **`gemini-cli` integráció n8n workflow-kba:**
|
||||
Az n8n workflow-kon belül az "Execute Command" node segítségével tudsz parancsokat futtatni a `gemini-cli` konténerben. A `gemini_cli_service` a konténer neve, amit a `docker-compose.yml` definiál:
|
||||
|
||||
```
|
||||
docker exec gemini_cli_service python /data/your_script.py --arg1 value1
|
||||
```
|
||||
* A `/data` mappa a `shared_data` volume, ami az `n8n` és a `gemini-cli` között van megosztva. Itt tudsz adatokat (pl. input fájlokat az n8n-ből) átadni a `gemini-cli` szkriptjeidnek, és az eredményeket (pl. output fájlokat) is ide mentheted vissza, hogy az n8n tovább feldolgozza.
|
||||
|
||||
## Leállítás
|
||||
|
||||
A konténerek leállításához és törléséhez a projekt gyökérkönyvtárából futtasd:
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
Ez leállítja és törli a szolgáltatás konténereit, valamint a `n8n_network` hálózatot. Az adatok (`postgres_data`, `n8n_data`, `shared_data`) azonban megmaradnak, hacsak nem törlöd őket expliciten.
|
||||
@@ -1,47 +0,0 @@
|
||||
services:
|
||||
db:
|
||||
image: postgres:13
|
||||
container_name: n8n_postgres_db
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_USER=${POSTGRES_USER}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- POSTGRES_DB=${POSTGRES_DB}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- n8n_network
|
||||
|
||||
n8n:
|
||||
build: .
|
||||
container_name: n8n_service
|
||||
restart: always
|
||||
ports:
|
||||
- "5678:5678"
|
||||
environment:
|
||||
- DB_TYPE=postgres
|
||||
- DB_POSTGRESDB_HOST=db
|
||||
- DB_POSTGRESDB_PORT=5432
|
||||
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
|
||||
- DB_POSTGRESDB_USER=${POSTGRES_USER}
|
||||
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
|
||||
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
|
||||
- N8N_PROTOCOL=https
|
||||
- NODE_ENV=production
|
||||
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
|
||||
volumes:
|
||||
- n8n_data:/home/node/.n8n
|
||||
- shared_data:/data
|
||||
networks:
|
||||
- n8n_network
|
||||
depends_on:
|
||||
- db
|
||||
|
||||
networks:
|
||||
n8n_network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
n8n_data:
|
||||
shared_data:
|
||||
@@ -1,18 +0,0 @@
|
||||
# Use an official Python runtime as a parent image
|
||||
FROM python:3.10-slim
|
||||
|
||||
# Set the working directory in the container
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Copy the requirements file into the container at /usr/src/app
|
||||
COPY requirements.txt ./
|
||||
|
||||
# Install any needed packages specified in requirements.txt
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
# Copy the rest of the application's code into the container
|
||||
COPY . .
|
||||
|
||||
# This will be overridden by the docker-compose command,
|
||||
# but it's good practice to have a default command.
|
||||
CMD ["tail", "-f", "/dev/null"]
|
||||
@@ -1,3 +0,0 @@
|
||||
# Add any Python libraries needed for your gemini-cli tool here
|
||||
# For example, to use the Google Generative AI SDK:
|
||||
google-generativeai
|
||||
@@ -1,5 +0,0 @@
|
||||
N8N_BASIC_AUTH_ACTIVE=true
|
||||
N8N_BASIC_AUTH_USER=admin
|
||||
N8N_BASIC_AUTH_PASSWORD=OSXkE8I7YbXpOf8ao_Cw7M.d6g-.54Ok
|
||||
|
||||
TZ=Europe/Budapest
|
||||
@@ -1,16 +0,0 @@
|
||||
version: '3.7'
|
||||
|
||||
services:
|
||||
n8n:
|
||||
image: n8nio/n8n
|
||||
container_name: n8n
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5678:5678"
|
||||
env_file:
|
||||
- .env
|
||||
volumes:
|
||||
- n8n_data:/home/node/.n8n
|
||||
|
||||
volumes:
|
||||
n8n_data:
|
||||
@@ -1,18 +0,0 @@
|
||||
# 1. lépés: Melyik alap image-ből induljunk?
|
||||
FROM fedora:latest
|
||||
|
||||
# 2. lépés: Parancsok futtatása a rendszeren belül
|
||||
# Frissítjük a csomagokat, telepítjük a nodejs-t és az npm-et, majd takarítunk
|
||||
RUN dnf update -y && \
|
||||
dnf install -y nodejs npm && \
|
||||
dnf clean all
|
||||
|
||||
# 3. lépés: Telepítjük a @google/gemini-cli-t globálisan
|
||||
RUN npm install -g @google/gemini-cli
|
||||
|
||||
# 4. lépés (Opcionális): Beállítunk egy alapértelmezett munkakönyvtárat
|
||||
WORKDIR /app
|
||||
|
||||
# 5. lépés: Mi fusson le, ha elindul a konténer?
|
||||
# Most már a gemini cli verzióját is kiírathatjuk
|
||||
CMD ["gemini", "--version"]
|
||||
@@ -1,5 +1,36 @@
|
||||
Aufgabe
|
||||
|
||||
1. Gegensprecanlage
|
||||
https://mrathje.de/kontakt.htm/
|
||||
https://www.tc-telefon.de/Kontakt/
|
||||
|
||||
-- https://www.behnke-online.de/de/partner-plz-20000-29999
|
||||
|
||||
4.
|
||||
|
||||
5.
|
||||
|
||||
6. Druckers Konfig to smtp_relay
|
||||
+ Weser
|
||||
+ Elbe
|
||||
+ Aalbek
|
||||
+ Hellbach
|
||||
+ Lottbek
|
||||
+ Zorge
|
||||
+ Goldbach
|
||||
+ Flottbek
|
||||
+ Hamme
|
||||
|
||||
Alster ?
|
||||
Ahr_Struensee-Haus
|
||||
- Seseke
|
||||
- Juemme
|
||||
- Radegast
|
||||
Steinbach
|
||||
Nonne
|
||||
- Eider
|
||||
- Enz
|
||||
- Orthbrookgraben
|
||||
- Siede
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ ep..Ep
|
||||
|
||||
Server:
|
||||
t1.meszely
|
||||
vi..Vi
|
||||
warP#....#Maci
|
||||
|
||||
000
|
||||
pandA#...#min
|
||||
@@ -18,7 +18,6 @@ a494052388958b494052388958
|
||||
Wifi:
|
||||
ASR22Antares
|
||||
|
||||
|
||||
KP:
|
||||
MuVD9Zcc4HK0jDQ4HzMt
|
||||
|
||||
@@ -26,6 +25,8 @@ Web:
|
||||
https://aps-hh.estargmbh.de/
|
||||
virgI6774+
|
||||
|
||||
Onboarding :
|
||||
file:///Z:/IT_Dokumentation/APS-IT-Dokumentation/onboarding.pdf
|
||||
|
||||
DHCP Servers:
|
||||
APS-Infra01
|
||||
@@ -56,6 +57,8 @@ MeszelyIstvan@682da8f717950.com
|
||||
WinPass
|
||||
MicrosoftAuth
|
||||
|
||||
Kapelou2025
|
||||
|
||||
000
|
||||
pandA#...#min
|
||||
|
||||
@@ -63,6 +66,10 @@ M:\Steribase\FileSrv\SBInter\InBox
|
||||
|
||||
ANTARES PHARMA SERVICE
|
||||
|
||||
Sophos :
|
||||
https://vpn.aps-hh.de:7443/
|
||||
|
||||
|
||||
Mobil : 0171 / 62 29 88 6
|
||||
E-Mail:D.Laumann@mavesoft.de
|
||||
|
||||
@@ -95,7 +102,6 @@ Status Lokal Remote Netzwerk
|
||||
-------------------------------------------------------------------------------
|
||||
M: \\aps.local\antares Microsoft Windows Network
|
||||
OK U: \\aps-file02\User$\i.meszely
|
||||
Microsoft Windows Network
|
||||
Z: \\aps.local\Data Microsoft Windows Network
|
||||
|
||||
|
||||
@@ -114,7 +120,6 @@ NuAaGTNPQWyeneQLI5qr
|
||||
|
||||
Unify TSP - uninstall,
|
||||
|
||||
|
||||
virgI6774#Virgi
|
||||
|
||||
virgI6774#
|
||||
@@ -128,13 +133,9 @@ Drucker Emmer
|
||||
NET-SW02 - 1/1/25
|
||||
Drucek Etsch
|
||||
|
||||
Windows Telefonische Aktivierung
|
||||
slui.exe 4
|
||||
|
||||
gemini api key : AIzaSyBUvqSD7llReHbCQAosuDDy1Q5gIT6pKLw
|
||||
gitea apy key : d5747e87cb2e1022904c4a60f801cb2758542abb
|
||||
|
||||
|
||||
docker-compose up -d
|
||||
docker-compose up -d --build
|
||||
docker-compose up -d --force-recreate
|
||||
@@ -144,10 +145,6 @@ getent group docker | cut -d: -f3
|
||||
|
||||
SOIB2026STD!
|
||||
|
||||
APS-FILE02
|
||||
User$\l.wobig\_Scans
|
||||
aps\svc.scan2home
|
||||
|
||||
KXBPK-6QNPK-93C3C-7KKVG-GMT44
|
||||
|
||||
# Ispconfig
|
||||
@@ -156,4 +153,8 @@ KXBPK-6QNPK-93C3C-7KKVG-GMT44
|
||||
[INFO] Warning: Please delete the log files in /root/ispconfig-install-log/setup-* once you don't need them anymore because they contain your passwords!
|
||||
|
||||
|
||||
Herr Werther Rainer
|
||||
0172 9428000
|
||||
|
||||
pandA#6774#Maci
|
||||
|
||||
|
||||
BIN
Doc/Pdf/onboarding.pdf
Normal file
BIN
Doc/Pdf/onboarding.pdf
Normal file
Binary file not shown.
14
Doc/STD-RODC01.md
Normal file
14
Doc/STD-RODC01.md
Normal file
@@ -0,0 +1,14 @@
|
||||
STD-RODC01
|
||||
STD-NSM01
|
||||
rdp STD-Admin01
|
||||
STD-Print01
|
||||
STD-Profile01
|
||||
rdp STD-File01
|
||||
rdp STD-File02
|
||||
STD-APO01
|
||||
STD-SQL01
|
||||
STD-AOTRACE01
|
||||
STD-RDSCB01
|
||||
STD-RDS01
|
||||
STD-RDS02
|
||||
STD-INFRA01
|
||||
47
Doc/Scripts/python/wakeonlan.py
Normal file
47
Doc/Scripts/python/wakeonlan.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import socket
|
||||
import struct
|
||||
|
||||
def send_wol_packet(mac_address, ip_address='255.255.255.255', port=9):
|
||||
"""
|
||||
Elküld egy Wake-on-LAN "magic packet"-et.
|
||||
|
||||
:param mac_address: A felébresztendő eszköz MAC-címe (pl. "AA:BB:CC:DD:EE:FF" vagy "AABBCCDDEEFF").
|
||||
:param ip_address: A cél IP-cím (általában broadcast cím a helyi hálózaton).
|
||||
Alapértelmezett: '255.255.255.255'
|
||||
:param port: A cél port (általában 7 vagy 9).
|
||||
Alapértelmezett: 9
|
||||
"""
|
||||
if len(mac_address) == 12:
|
||||
pass
|
||||
elif len(mac_address) == 17:
|
||||
mac_address = mac_address.replace(':', '').replace('-', '')
|
||||
else:
|
||||
raise ValueError("Érvénytelen MAC-cím formátum. Használj 'AABBCCDDEEFF' vagy 'AA:BB:CC:DD:EE:FF' formátumot.")
|
||||
|
||||
# A "magic packet" felépítése: 6 bájt FF, majd 16-szor a MAC-cím
|
||||
data = b'FFFFFFFFFFFF' + (bytes.fromhex(mac_address) * 16)
|
||||
|
||||
# UDP socket létrehozása
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # Broadcast engedélyezése
|
||||
|
||||
try:
|
||||
sock.sendto(data, (ip_address, port))
|
||||
print(f"WOL csomag elküldve a {mac_address} MAC-címre a {ip_address}:{port} címre.")
|
||||
except Exception as e:
|
||||
print(f"Hiba történt a WOL csomag küldésekor: {e}")
|
||||
finally:
|
||||
sock.close()
|
||||
|
||||
# Példa használat:
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
if len(sys.argv) < 2:
|
||||
print("Használat: python wakeonlan.py <MAC_CÍM> [IP_CÍM] [PORT]")
|
||||
sys.exit(1)
|
||||
|
||||
mac_address = sys.argv[1]
|
||||
ip_address = sys.argv[2] if len(sys.argv) > 2 else '255.255.255.255'
|
||||
port = int(sys.argv[3]) if len(sys.argv) > 3 else 9
|
||||
|
||||
send_wol_packet(mac_address, ip_address, port)
|
||||
16
Doc/Switches.dm.rb
Normal file
16
Doc/Switches.dm.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
7c:5a:1c:e3:7d:ae # APX120 NET-AP11 Halle Antares
|
||||
7c:5a:1c:f0:bc:84 # APX120 NET-AP15 Halle 2 Pfeile
|
||||
7c:5a:1c:f0:bd:1d # APX120 NET-AP10 Halle 2 Wand
|
||||
7c:5a:1c:f0:cd:40 # APX120 NET-AP14 H3 Ecke
|
||||
7c:5a:1c:f1:0b:13 # APX120 NET-AP08 IT Büro
|
||||
7c:5a:1c:f1:28:e4 # APX120 NET-AP09 Halle Antares
|
||||
c8:4f:86:9e:e8:0a # APX120 NET-AP07 Halle Vivatis
|
||||
c8:4f:86:9e:f0:13 # APX120 NET-AP05 Halle Vivatis
|
||||
c8:4f:86:9a:a6:0c # APX120 NET-AP12 Perso
|
||||
c8:4f:86:9a:a6:2e # APX120 NET-AP13 1.OG_2(OQS)
|
||||
c8:4f:86:9a:a6:50 # APX120 NET-AP01 BTM Raum
|
||||
c8:4f:86:9a:b3:43 # APX120 NET-AP04 Halle Vivatis
|
||||
c8:4f:86:9a:b3:a9 # APX120 NET-AP03 Apotheke 02
|
||||
c8:4f:86:9a:d8:1e # APX120 NET-AP02 Apotheke 01
|
||||
c8:4f:86:9f:1e:d3 # APX120 NET-AP06 Halle Vivatis
|
||||
|
||||
0
Einkaufen/KaufenList.md
Normal file
0
Einkaufen/KaufenList.md
Normal file
70
GEMINI_o365_fertig.md
Normal file
70
GEMINI_o365_fertig.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Microsoft 365 SMTP Relay Beállítása Helyi Eszközökhöz
|
||||
|
||||
Ez az útmutató leírja a "best practice" módszert arra, hogyan lehet helyi hálózati eszközök (nyomtatók, scannerek, IoT eszközök) számára lehetővé tenni az e-mail küldést egy Microsoft 365 (korábban Office 365) fiókon keresztül.
|
||||
|
||||
## A probléma: Helyi eszközök és a Microsoft 365
|
||||
|
||||
Sok hálózati eszköz nem támogatja a modern, biztonságos e-mail küldési protokollokat (pl. STARTTLS, OAuth2), amelyeket a Microsoft 365 megkövetel. Emiatt közvetlenül nem tudnak e-mailt küldeni. A megoldás egy helyi SMTP Relay (smarthost) szerver beállítása, ami fogadja az eszközök egyszerű kéréseit és biztonságos módon továbbítja azokat a Microsoft 365 felé.
|
||||
|
||||
## Feladó Címe: Valódi Domain Használata
|
||||
|
||||
**Mindig a valódi, publikus domain nevet használja** a feladó címében (pl. `szkenner@ceged.hu`). Ne használjon `.local` vagy más nem létező domaineket, mert azokat a spam szűrők azonnal elutasítják, és nem teszik lehetővé a kézbesítéshez szükséges SPF/DKIM rekordok használatát.
|
||||
|
||||
---
|
||||
|
||||
## Best Practice: SMTP Relay Megvalósítása
|
||||
|
||||
A folyamat három fő lépésből áll: a Microsoft 365 fogadó oldalának (Connector) beállítása, a helyi relay szerver konfigurálása, és végül az eszközök beállítása.
|
||||
|
||||
### Előfeltételek
|
||||
* Egy folyamatosan működő helyi szerver (pl. egy Linux szerver Postfix-szel, mint egy ISPConfig gép).
|
||||
* **Statikus (fix) publikus IP cím**, ahonnan a szerver az internet felé látszik.
|
||||
* Adminisztrátori hozzáférés a Microsoft 365 tenant-hoz.
|
||||
|
||||
### 1. Lépés: Microsoft 365 Connector Létrehozása
|
||||
|
||||
Engedélyezni kell a Microsoft oldalon, hogy a fix IP címünkről érkező leveleket authentikáció nélkül elfogadja.
|
||||
|
||||
1. Jelentkezzen be a **Microsoft 365 Exchange admin centerbe**.
|
||||
2. Navigáljon a **Mail flow > Connectors** menüpontra.
|
||||
3. Kattintson az **"Add a connector"** gombra.
|
||||
4. A beállítások a következők legyenek:
|
||||
* Connection from: **Your organization's email server**
|
||||
* Connection to: **Office 365**
|
||||
5. Adjon a connectornak egy egyértelmű nevet (pl. "Helyi Irodai Eszközök Relay").
|
||||
6. A következő lépésben adja meg a **statikus publikus IP címét**. A Microsoft ez alapján fogja azonosítani és megbízhatónak ítélni a szerverét.
|
||||
7. Mentse a beállításokat.
|
||||
|
||||
### 2. Lépés: Helyi Relay Szerver (Postfix) Beállítása
|
||||
|
||||
A helyi szervernek tudnia kell, hogy minden levelet a Microsoft 365-nek kell továbbítania.
|
||||
|
||||
1. **Keresse meg az M365 MX rekordját:** Ezt a domainjéhez tartozó MX rekord határozza meg. Lekérdezheti pl. `nslookup -q=mx ceged.hu` paranccsal. Az eredmény valami hasonló lesz: `ceged-hu.mail.protection.outlook.com`.
|
||||
2. **Konfigurálja a Postfix-et:** Szerkessze a `/etc/postfix/main.cf` fájlt, és adja hozzá vagy módosítsa a `relayhost` paramétert. A szögletes zárójel fontos!
|
||||
|
||||
```ini
|
||||
# /etc/postfix/main.cf
|
||||
relayhost = [ceged-hu.mail.protection.outlook.com]:25
|
||||
```
|
||||
|
||||
3. **Engedélyezze a belső hálózatot:** Győződjön meg róla, hogy a `mynetworks` direktíva tartalmazza a belső hálózati tartományt (pl. `192.168.1.0/24`), hogy a helyi eszközök authentikáció nélkül tudják használni a szervert.
|
||||
4. **Indítsa újra a Postfix szolgáltatást:**
|
||||
```sh
|
||||
sudo systemctl restart postfix
|
||||
```
|
||||
|
||||
### 3. Lépés: Eszközök és Nyomtatók Beállítása
|
||||
|
||||
Az összes érintett eszközön az SMTP szervernek a helyi relay szervert kell beállítani.
|
||||
|
||||
* **SMTP Szerver:** A helyi Postfix szerver IP címe (pl. `192.168.1.10`).
|
||||
* **Port:** `25`
|
||||
* **Titkosítás / SSL / TLS:** Nincs (None)
|
||||
* **Authentikáció / Hitelesítés:** Nincs (Username/Password üresen hagyva)
|
||||
* **Feladó címe:** Egy valós domainnel rendelkező e-mail cím (pl. `nyomtato@ceged.hu`).
|
||||
|
||||
## Az E-mail Útvonala
|
||||
|
||||
Ezzel a konfigurációval a levelek útja a következő:
|
||||
|
||||
`Eszköz (pl. nyomtató)` → `Helyi Postfix Szerver (auth nélkül)` → `Microsoft 365 Connector (IP azonosítással)` → `Címzett (belső vagy külső)`
|
||||
111
GEMINI_smtp_relay_opprem.md
Normal file
111
GEMINI_smtp_relay_opprem.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# Postfix SMTP Relay beállítása On-Premise Exchange szerverhez
|
||||
|
||||
Ez az útmutató leírja, hogyan lehet egy Postfix SMTP relay szervert beállítani egy Linux VM-en, amely a belső hálózati eszközökről (pl. nyomtatók, IoT eszközök) érkező e-maileket továbbítja egy helyi (on-premise) Microsoft Exchange szerver felé. A hitelesítés IP-cím alapú bizalmi kapcsolaton (Receive Connector) keresztül történik, nem igényel felhasználónevet és jelszót.
|
||||
|
||||
## Komponensek és IP-címek
|
||||
|
||||
* **Postfix Relay Szerver (Linux VM):** `10.101.0.251`
|
||||
* **On-Premise Exchange Szerver:** `aps-exch01.aps.local`
|
||||
* **Kliens Hálózat (Nyomtatók):** `10.102.9.0/24`
|
||||
|
||||
---
|
||||
|
||||
## 1. Lépések a Postfix Szerveren (`10.101.0.251`)
|
||||
|
||||
Ezeket a parancsokat a Linux VM-en kell futtatni.
|
||||
|
||||
### 1.1. Telepítés
|
||||
|
||||
Válassza ki a megfelelő parancsot a Linux disztribúciójának megfelelően.
|
||||
|
||||
**Fedora/CentOS/RHEL esetén:**
|
||||
```bash
|
||||
sudo dnf install postfix mailx cyrus-sasl-plain -y
|
||||
```
|
||||
|
||||
**Debian/Ubuntu esetén:**
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install postfix mailutils libsasl2-modules -y
|
||||
```
|
||||
*A telepítés során válassza az **'Internet Site'** opciót. A "System mail name" mezőbe írjon be egy tetszőleges, de beszédes nevet, pl. `postfix-relay.aps.local`.*
|
||||
|
||||
### 1.2. Konfiguráció
|
||||
|
||||
Nyissa meg a `/etc/postfix/main.cf` konfigurációs fájlt egy szövegszerkesztővel (`sudo nano /etc/postfix/main.cf`), törölje a teljes tartalmát, és illessze be az alábbiakat:
|
||||
|
||||
```ini
|
||||
# A belső, on-premise Exchange szerver címe, ahova továbbítjuk a leveleket.
|
||||
relayhost = aps-exch01.aps.local
|
||||
|
||||
# A belső hálózatok, ahonnan a Postfix fogadja a leveleket (nyomtatók, stb.)
|
||||
# Itt szerepel a loopback, és az Ön által megadott nyomtató hálózat.
|
||||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.102.9.0/24
|
||||
|
||||
# Nincs szükség kliens oldali hitelesítésre, mivel az Exchange-en beállítjuk az IP-alapú bizalmat.
|
||||
smtp_sasl_auth_enable = no
|
||||
|
||||
# Ajánlott beállítás a TLS használatára, még belső hálózaton is
|
||||
smtp_use_tls = yes
|
||||
smtp_tls_security_level = may
|
||||
```
|
||||
|
||||
### 1.3. Szolgáltatás újraindítása
|
||||
|
||||
A konfiguráció érvénybe léptetéséhez indítsa újra a Postfix szolgáltatást, és engedélyezze az automatikus indulást.
|
||||
|
||||
```bash
|
||||
sudo systemctl restart postfix
|
||||
sudo systemctl enable postfix
|
||||
```
|
||||
|
||||
### 1.4. Tesztelés
|
||||
|
||||
Küldjön egy teszt e-mailt a parancssorból, hogy ellenőrizze a működést.
|
||||
|
||||
```bash
|
||||
echo "Ez egy teszt üzenet a Postfix relay szerverről." | mail -s "Postfix Teszt" valaki@az_on_domain_e.hu
|
||||
```
|
||||
*Cserélje ki a `valaki@az_on_domain_e.hu` címet egy valós e-mail címre a szervezetén belül.*
|
||||
|
||||
A levélforgalom naplóját a `/var/log/mail.log` (Debian/Ubuntu) vagy `/var/log/maillog` (Fedora/RHEL) fájlban követheti.
|
||||
|
||||
---
|
||||
|
||||
## 2. Lépések az On-Premise Exchange Szerveren (`aps-exch01.aps.local`)
|
||||
|
||||
Ezeket a lépéseket az Exchange adminisztrátorának kell elvégeznie az Exchange szerveren.
|
||||
|
||||
### 2.1. Receive Connector Létrehozása (Grafikus felületen)
|
||||
|
||||
1. Nyissa meg az **Exchange Admin Center (EAC)** webes felületét.
|
||||
2. Navigáljon a **Mail flow > Receive connectors** menüpontra.
|
||||
3. Kattintson az `+` ikonra egy új Receive Connector létrehozásához.
|
||||
4. Adjon neki egy beszédes nevet: `Postfix_Relay_10.101.0.251`.
|
||||
5. Válassza a **Frontend Transport** szerepkört.
|
||||
6. A "Remote network settings" (Távoli hálózati beállítások) alatt távolítsa el az alapértelmezett `0.0.0.0-255.255.255.255` tartományt, és adja hozzá **csak a Postfix szerver IP-címét**: `10.101.0.251`.
|
||||
7. A biztonsági beállításoknál győződjön meg róla, hogy az **Anonymous users** opció be van jelölve.
|
||||
8. Mentse el a beállításokat.
|
||||
|
||||
### 2.2. Külső Relay Engedélyezése (PowerShell)
|
||||
|
||||
**Ez a lépés kritikus ahhoz, hogy a relay szerver a szervezeten kívüli címzetteknek is tudjon levelet küldeni!**
|
||||
|
||||
1. Nyisson meg egy **Exchange Management Shell-t** rendszergazdaként az Exchange szerveren.
|
||||
2. Futtassa az alábbi parancsot (a connector nevének egyeznie kell a 2.1. pontban megadottal):
|
||||
|
||||
```powershell
|
||||
Get-ReceiveConnector "Postfix_Relay_10.101.0.251" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
|
||||
```
|
||||
A parancs lefutása után a beállítás élesedik.
|
||||
|
||||
---
|
||||
|
||||
## 3. Kliens Eszközök beállítása
|
||||
|
||||
A nyomtatókon, szkennereken, és egyéb IoT eszközökön a következő SMTP beállításokat kell használni:
|
||||
|
||||
* **SMTP Szerver:** `10.101.0.251`
|
||||
* **SMTP Port:** `25`
|
||||
* **Hitelesítés / Authentication:** Nincs / None
|
||||
* **Titkosítás / Encryption:** Nincs / None (vagy STARTTLS, ha az eszköz támogatja)
|
||||
47
Scripts/powershell/Send-AuthlessTestMail.ps1
Normal file
47
Scripts/powershell/Send-AuthlessTestMail.ps1
Normal file
@@ -0,0 +1,47 @@
|
||||
# Send-AuthlessTestMail.ps1
|
||||
#
|
||||
# E-mail küldése hitelesítés nélkül egy SMTP relay szerveren keresztül.
|
||||
# Cél: Ellenőrizni a Postfix SMTP relay beállításait.
|
||||
|
||||
# --- Konfigurációs beállítások ---
|
||||
# Az Ön Postfix SMTP relay szerverének IP-címe
|
||||
$SmtpServer = "10.101.0.251"
|
||||
# Az SMTP port, alapértelmezés szerint 25
|
||||
$SmtpPort = 25
|
||||
|
||||
# A feladó e-mail címe. Fontos: Az Exchange-nek el kell fogadnia ezt a feladót a Postfix relay-ről.
|
||||
# Cserélje le egy valós e-mail címre az Ön domainjéről!
|
||||
$From = "noreply@aps-hh.de"
|
||||
|
||||
# A címzett e-mail címe. Ide fog megérkezni a teszt e-mail.
|
||||
# Cserélje le egy valós címzett e-mail címre!
|
||||
$To = "i.meszely@aps-hh.de"
|
||||
|
||||
# Az e-mail tárgya és törzse
|
||||
$Subject = "Automatikus Teszt E-mail a Postfix Relay-en keresztül (Auth nélkül)"
|
||||
$Body = "Tisztelt Címzett!" + "`n`n" +
|
||||
"Ez egy automatikus teszt üzenet, amelyet egy PowerShell szkript küldött el a Postfix SMTP relay szerverén keresztül, hitelesítés nélkül." + "`n" +
|
||||
"Ha ezt az e-mailt megkapta, az azt jelenti, hogy a Postfix relay szerver és az Exchange Receive Connector beállításai helyesek, és sikeresen továbbította az üzenetet." + "`n`n" +
|
||||
"Üdvözlettel," + "`n" +
|
||||
"Az Ön teszt szkriptje"
|
||||
|
||||
# --- E-mail küldése ---
|
||||
try {
|
||||
Write-Host "E-mail küldése a $($SmtpServer):$($SmtpPort) címre..." -ForegroundColor Cyan
|
||||
|
||||
# A -Credential paraméter elhagyása biztosítja, hogy ne történjen hitelesítési kísérlet.
|
||||
Send-MailMessage -SmtpServer $SmtpServer -Port $SmtpPort -From $From -To $To -Subject $Subject -Body $Body -ErrorAction Stop
|
||||
|
||||
Write-Host "Sikeresen elküldött teszt e-mailt a $($SmtpServer)-re." -ForegroundColor Green
|
||||
Write-Host "Kérem, ellenőrizze a $($To) postafiókját." -ForegroundColor Green
|
||||
}
|
||||
catch {
|
||||
Write-Host "Hiba történt az e-mail küldésekor:" -ForegroundColor Red
|
||||
Write-Host $_.Exception.Message -ForegroundColor Red
|
||||
Write-Host "Kérjük, ellenőrizze a Postfix szerver logjait (/var/log/mail.log) a részletekért." -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
# --- Fontos Megjegyzés ---
|
||||
# Győződjön meg róla, hogy a forrásgép IP-címe (ahonnan futtatja a szkriptet)
|
||||
# benne van a Postfix szerver main.cf fájljának 'mynetworks' direktívájában!
|
||||
# Pl. ha a szkriptet a 10.102.1.121-ről futtatja, akkor a 'mynetworks'-ben szerepelnie kell a 10.102.1.0/24-nek.
|
||||
Reference in New Issue
Block a user