Compare commits
3 Commits
5818349d91
...
7256763c20
| Author | SHA1 | Date | |
|---|---|---|---|
| 7256763c20 | |||
| 54ddafd0fc | |||
| baeab6daf2 |
@@ -124,6 +124,7 @@ func GetAllActions() []DocumentedAction {
|
|||||||
ShellScript{},
|
ShellScript{},
|
||||||
Shutdown{},
|
Shutdown{},
|
||||||
SendMatrix{},
|
SendMatrix{},
|
||||||
|
SendTelegram{},
|
||||||
TimeOut{},
|
TimeOut{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,11 +98,11 @@ func (s SendMatrix) DryExecute() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s SendMatrix) Execute() {
|
func (s SendMatrix) Execute() {
|
||||||
fmt.Println("SendMatrix: Trying to send test message")
|
fmt.Println("SendMatrix: Trying to send message")
|
||||||
err := s.sendMessage(s.Message)
|
err := s.sendMessage(s.Message)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("SendMatrix: failed to send test message")
|
fmt.Println("SendMatrix: failed to send message")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.ActionChan <- err
|
s.ActionChan <- err
|
||||||
|
|||||||
143
actions/send_telegram.go
Normal file
143
actions/send_telegram.go
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
package actions
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"encoding/json"
|
||||||
|
|
||||||
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
||||||
|
|
||||||
|
"unknown.com/gokill/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SendTelegram struct {
|
||||||
|
Token string `json:"token"`
|
||||||
|
ChatId string `json:"chatId"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
TestMessage string `json:"testMessage"`
|
||||||
|
ActionChan ActionResultChan
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s SendTelegram) sendMessage(message string) error {
|
||||||
|
bot, err := tgbotapi.NewBotAPI("5221828879:AAGrETcxOpAhzPJUl-fUqMJGUAe6ShSuuRs")
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("SendTelegram sendMessage error: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
bot.Debug = true
|
||||||
|
|
||||||
|
fmt.Printf("Authorized on account %s", bot.Self.UserName)
|
||||||
|
|
||||||
|
u := tgbotapi.NewUpdate(0)
|
||||||
|
u.Timeout = 60
|
||||||
|
|
||||||
|
msg := tgbotapi.NewMessage(-746157642, message)
|
||||||
|
bot.Send(msg)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s SendTelegram) DryExecute() {
|
||||||
|
fmt.Println("SendTelegram: Trying to send test message")
|
||||||
|
err := s.sendMessage(s.TestMessage)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("SendTelegram: failed to send test message")
|
||||||
|
}
|
||||||
|
|
||||||
|
s.ActionChan <- err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s SendTelegram) Execute() {
|
||||||
|
fmt.Println("SendTelegram: Trying to send message")
|
||||||
|
err := s.sendMessage(s.Message)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("SendTelegram: failed to send message")
|
||||||
|
}
|
||||||
|
|
||||||
|
s.ActionChan <- err
|
||||||
|
}
|
||||||
|
|
||||||
|
func CreateSendTelegram(config internal.ActionConfig, c ActionResultChan) (SendTelegram, error) {
|
||||||
|
result := SendTelegram{}
|
||||||
|
|
||||||
|
err := json.Unmarshal(config.Options, &result)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return SendTelegram{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.Token == "" {
|
||||||
|
return SendTelegram{}, internal.OptionMissingError{"token"}
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.ChatId == "" {
|
||||||
|
return SendTelegram{}, internal.OptionMissingError{"chatId"}
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.Message == "" {
|
||||||
|
return SendTelegram{}, internal.OptionMissingError{"message"}
|
||||||
|
}
|
||||||
|
|
||||||
|
if result.TestMessage == "" {
|
||||||
|
return SendTelegram{}, internal.OptionMissingError{"testMessage"}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.ActionChan = c
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s SendTelegram) Create(config internal.ActionConfig, c ActionResultChan) (Action, error) {
|
||||||
|
return CreateSendTelegram(config, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p SendTelegram) GetName() string {
|
||||||
|
return "SendTelegram"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p SendTelegram) GetDescription() string {
|
||||||
|
return "Sends a message to a given room. The user needs to be part of that room already."
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p SendTelegram) GetExample() string {
|
||||||
|
return `
|
||||||
|
{
|
||||||
|
"type": "SendTelegram",
|
||||||
|
"options": {
|
||||||
|
"token": "5349923487:FFGrETxa0pA29d02Akslw-lkwjdA92KAH2",
|
||||||
|
"chatId": "-832345892",
|
||||||
|
"message": "attention, intruders got my device!",
|
||||||
|
"testMessage": "this is just a test, no worries"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p SendTelegram) GetOptions() []internal.ConfigOption {
|
||||||
|
return []internal.ConfigOption{
|
||||||
|
{
|
||||||
|
Name: "token",
|
||||||
|
Type: "string",
|
||||||
|
Description: "telegram bot token (ask botfather)",
|
||||||
|
Default: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "chatId",
|
||||||
|
Type: "int",
|
||||||
|
Description: "chatId of group or chat you want the message be sent to.",
|
||||||
|
Default: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "message",
|
||||||
|
Type: "string",
|
||||||
|
Description: "actual message that should be sent",
|
||||||
|
Default: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "testMessage",
|
||||||
|
Type: "string",
|
||||||
|
Description: "message sent during test run",
|
||||||
|
Default: "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
36
flake.lock
generated
36
flake.lock
generated
@@ -18,7 +18,41 @@
|
|||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs",
|
||||||
|
"utils": "utils"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1694529238,
|
||||||
|
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
114
flake.nix
114
flake.nix
@@ -4,13 +4,17 @@
|
|||||||
#nixpkgs for testing framework
|
#nixpkgs for testing framework
|
||||||
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||||
|
|
||||||
outputs = { self, nixpkgs, ... }:
|
inputs.utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, utils, ... }:
|
||||||
|
|
||||||
|
nixpkgs.lib.attrsets.recursiveUpdate
|
||||||
|
(utils.lib.eachSystem (utils.lib.defaultSystems) ( system:
|
||||||
let
|
let
|
||||||
forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" ];
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
devShell."x86_64-linux" = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
go
|
go
|
||||||
gotools
|
gotools
|
||||||
@@ -19,40 +23,52 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
packages.x86_64-linux.gokill = nixpkgs.legacyPackages.x86_64-linux.buildGoModule rec {
|
packages = {
|
||||||
pname = "gokill";
|
gokill = pkgs.buildGoModule rec {
|
||||||
version = "1.0";
|
pname = "gokill";
|
||||||
vendorHash = "sha256-MVIvXxASUO33Ca34ruIz4S0QDJcW2unaG4+Zo73g/9o=";
|
version = "1.0";
|
||||||
src = ./.;
|
vendorHash = "sha256-8xHjVwNskgiSoDKbOpL2phHub1F21ios1t9BcZB944o=";
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
pkgs.olm
|
pkgs.olm
|
||||||
];
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
gokill-docbuilder = pkgs.buildGoModule rec {
|
||||||
|
pname = "docbuilder";
|
||||||
|
version = "1.0";
|
||||||
|
vendorHash = "sha256-8xHjVwNskgiSoDKbOpL2phHub1F21ios1t9BcZB944o=";
|
||||||
|
buildFLags = "-o . $dest/cmd/gokill/docbuilder";
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
pkgs.olm
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
docs = pkgs.callPackage (import ./docs/default.nix) { self = self; };
|
||||||
|
|
||||||
|
default = self.packages.${system}.gokill;
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
packages.x86_64-linux.gokill-docbuilder = nixpkgs.legacyPackages.x86_64-linux.buildGoModule rec {
|
apps = {
|
||||||
pname = "docbuilder";
|
docs = {
|
||||||
version = "1.0";
|
type = "app";
|
||||||
vendorHash = "sha256-MVIvXxASUO33Ca34ruIz4S0QDJcW2unaG4+Zo73g/9o=";
|
program = builtins.toString (pkgs.writeScript "docs" ''
|
||||||
buildFLags = "-o . $dest/cmd/gokill/docbuilder";
|
${pkgs.python3}/bin/python3 -m http.server --directory ${self.packages."${system}".docs}/share/doc'');
|
||||||
src = ./.;
|
};
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
pkgs.olm
|
|
||||||
];
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
})) ({
|
||||||
packages.x86_64-linux.docs = pkgs.callPackage (import ./docs/default.nix) { self = self; };
|
|
||||||
|
|
||||||
packages.x86_64-linux.default = self.packages.x86_64-linux.gokill;
|
|
||||||
|
|
||||||
nixosModules.gokill = import ./nixos-modules/gokill.nix { self = self; };
|
nixosModules.gokill = import ./nixos-modules/gokill.nix { self = self; };
|
||||||
|
|
||||||
packages.x86_64-linux.testVm =
|
packages.x86_64-linux.testVm =
|
||||||
@@ -64,6 +80,7 @@
|
|||||||
self.nixosModules.gokill
|
self.nixosModules.gokill
|
||||||
{
|
{
|
||||||
services.gokill.enable = true;
|
services.gokill.enable = true;
|
||||||
|
services.gokill.testRun = false;
|
||||||
services.gokill.triggers = [
|
services.gokill.triggers = [
|
||||||
{
|
{
|
||||||
type = "Timeout";
|
type = "Timeout";
|
||||||
@@ -72,19 +89,12 @@
|
|||||||
duration = 10;
|
duration = 10;
|
||||||
};
|
};
|
||||||
actions = [
|
actions = [
|
||||||
{
|
{
|
||||||
type = "Timeout";
|
type = "Shutdown";
|
||||||
options = {
|
options = {
|
||||||
duration = 5;
|
};
|
||||||
};
|
stage = 2;
|
||||||
stage = 1;
|
}
|
||||||
}
|
|
||||||
{
|
|
||||||
type = "Shutdown";
|
|
||||||
options = {
|
|
||||||
};
|
|
||||||
stage = 2;
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -104,19 +114,13 @@
|
|||||||
'');
|
'');
|
||||||
};
|
};
|
||||||
|
|
||||||
apps.x86_64-linux.docs = {
|
checks.x86_64-linux = let
|
||||||
type = "app";
|
|
||||||
program = builtins.toString (nixpkgs.legacyPackages."x86_64-linux".writeScript "docs" ''
|
|
||||||
${pkgs.python3}/bin/python3 -m http.server --directory ${self.packages."x86_64-linux".docs}/share/doc'');
|
|
||||||
};
|
|
||||||
|
|
||||||
checks = forAllSystems (system: let
|
|
||||||
checkArgs = {
|
checkArgs = {
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
||||||
inherit self;
|
inherit self;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
gokill = import ./test/test.nix checkArgs;
|
gokill = import ./test/test.nix checkArgs;
|
||||||
});
|
};
|
||||||
};
|
}) ;
|
||||||
}
|
}
|
||||||
|
|||||||
1
go.mod
1
go.mod
@@ -3,6 +3,7 @@ module unknown.com/gokill
|
|||||||
go 1.21.3
|
go 1.21.3
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1
|
||||||
github.com/mattn/go-sqlite3 v1.14.17
|
github.com/mattn/go-sqlite3 v1.14.17
|
||||||
maunium.net/go/mautrix v0.16.1
|
maunium.net/go/mautrix v0.16.1
|
||||||
)
|
)
|
||||||
|
|||||||
2
go.sum
2
go.sum
@@ -3,6 +3,8 @@ github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q
|
|||||||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 h1:wG8n/XJQ07TmjbITcGiUaOtXxdrINDz1b0J1w0SzqDc=
|
||||||
|
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1/go.mod h1:A2S0CWkNylc2phvKXWBBdD3K0iGnDBGbzRpISP2zBl8=
|
||||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||||
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
||||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||||
|
|||||||
Reference in New Issue
Block a user