itlsoft / lb

0 stars 0 forks source link

Bugs #7

Open itlsoft opened 4 months ago

itlsoft commented 4 months ago
import boto3
from botocore.exceptions import BotoCoreError, NoCredentialsError

def get_bucket_metrics():
    try:
        # Utwórz sesję Boto3
        session = boto3.Session(
            aws_access_key_id='YOUR_ACCESS_KEY',
            aws_secret_access_key='YOUR_SECRET_KEY',
            region_name='us-west-2'  # lub inny region
        )

        # Utwórz klienta CloudWatch
        cloudwatch = session.client('cloudwatch')

        # Pobierz listę kubełków S3
        s3 = session.client('s3')
        response = s3.list_buckets()
        buckets = [bucket['Name'] for bucket in response['Buckets']]

        # Pobierz metryki dla każdego kubełka
        for bucket in buckets:
            metrics = cloudwatch.list_metrics(
                Namespace='AWS/S3',
                MetricName='NumberOfObjects',
                Dimensions=[
                    {
                        'Name': 'BucketName',
                        'Value': bucket
                    },
                    {
                        'Name': 'StorageType',
                        'Value': 'AllStorageTypes'
                    }
                ]
            )
            print(f"Metryki dla kubełka {bucket}: {metrics}")

    except NoCredentialsError:
        print("Brak poświadczeń do połączenia z AWS.")
    except BotoCoreError as e:
        print(f"Wystąpił błąd podczas połączenia z AWS: {e}")

if __name__ == "__main__":
    get_bucket_metrics()
itlsoft commented 4 months ago
import boto3
from botocore.exceptions import ClientError

def get_bucket_metrics(bucket_name):
    try:
        # Utwórz klienta CloudWatch
        cloudwatch_client = boto3.client('cloudwatch')

        # Pobierz nazwę regionu bieżącej sesji
        region = boto3.Session().region_name

        # Pobierz nazwę bucketu
        bucket = boto3.resource('s3').Bucket(bucket_name)

        # Pobierz identyfikator ARN zasobu
        resource_arn = f"arn:aws:s3:::{bucket_name}"

        # Pobierz metryki z CloudWatch
        response = cloudwatch_client.get_metric_data(
            MetricDataQueries=[
                {
                    'Id': 'objects',
                    'MetricStat': {
                        'Metric': {
                            'Namespace': 'AWS/S3',
                            'MetricName': 'NumberOfObjects',
                            'Dimensions': [
                                {
                                    'Name': 'BucketName',
                                    'Value': bucket_name
                                },
                                {
                                    'Name': 'StorageType',
                                    'Value': 'AllStorageTypes'
                                }
                            ]
                        },
                        'Period': 3600,
                        'Stat': 'Average'
                    },
                    'ReturnData': True
                },
                {
                    'Id': 'bucket_size',
                    'MetricStat': {
                        'Metric': {
                            'Namespace': 'AWS/S3',
                            'MetricName': 'BucketSizeBytes',
                            'Dimensions': [
                                {
                                    'Name': 'BucketName',
                                    'Value': bucket_name
                                },
                                {
                                    'Name': 'StorageType',
                                    'Value': 'StandardStorage'
                                }
                            ]
                        },
                        'Period': 3600,
                        'Stat': 'Average'
                    },
                    'ReturnData': True
                }
            ],
            StartTime=(datetime.now() - timedelta(hours=1)).isoformat(),
            EndTime=datetime.now().isoformat(),
            ScanBy='TimestampDescending'
        )

        # Wyświetl informacje o metrykach
        objects_metric_data = response['MetricDataResults'][0]['Values']
        bucket_size_metric_data = response['MetricDataResults'][1]['Values']

        print(f"Bucket: {bucket_name}")
        print(f"Region: {region}")
        print(f"Objects Count: {objects_metric_data[0]}")
        print(f"Bucket Size (Bytes): {bucket_size_metric_data[0]}")

    except ClientError as e:
        print(f"Error: {e.response['Error']['Code']} - {e.response['Error']['Message']}")
    except Exception as e:
        print(f"An error occurred: {str(e)}")

# Przykładowe użycie funkcji
bucket_name = 'nazwa_bucketu'
get_bucket_metrics(bucket_name)
itlsoft commented 3 months ago
document.getElementById('submit').addEventListener('click', function() {
    var radioButtons = document.getElementsByName('answer');
    var isChecked = false;

    for(var i = 0; i < radioButtons.length; i++) {
        if(radioButtons[i].checked) {
            isChecked = true;
            break;
        }
    }

    var answerChecks = document.querySelectorAll('.answer-check');
    answerChecks.forEach(function(answerCheck) {
        if(isChecked) {
            answerCheck.classList.remove('makechoice');
        } else {
            answerCheck.classList.add('makechoice');
        }
    });
});
itlsoft commented 3 months ago
document.querySelectorAll('input[name="answer"]').forEach(function(radioButton) {
    radioButton.addEventListener('change', function() {
        var answerChecks = document.querySelectorAll('.answer-check');
        answerChecks.forEach(function(answerCheck) {
            answerCheck.classList.remove('makechoice');
            var qmessage = answerCheck.querySelector('.qmessage');
            if (qmessage) {
                qmessage.textContent = ''; // Usunięcie tekstu
            }
        });
        if (this.checked) {
            var relatedAnswerCheck = this.closest('.answer-check');
            if (relatedAnswerCheck) {
                relatedAnswerCheck.classList.add('makechoice');
                var qmessage = relatedAnswerCheck.querySelector('.qmessage');
                if (qmessage) {
                    qmessage.textContent = 'Tekst HTML'; // Dodanie tekstu HTML
                }
            }
        }
    });
});

document.getElementById('submit').addEventListener('click', function() {
    var answerChecks = document.querySelectorAll('.answer-check');
    var noRadioButtonChecked = true;
    document.querySelectorAll('input[name="answer"]').forEach(function(radioButton) {
        if (radioButton.checked) {
            noRadioButtonChecked = false;
        }
    });
    if (noRadioButtonChecked) {
        answerChecks.forEach(function(answerCheck) {
            answerCheck.classList.add('makechoice');
            var qmessage = answerCheck.querySelector('.qmessage');
            if (qmessage) {
                qmessage.textContent = ''; // Usunięcie tekstu
            }
        });
    }
});
itlsoft commented 3 months ago
$(document).ready(function() {
    $('.respond-button').click(function() {
        var id = $(this).closest('tr').find('td:eq(0)').text();
        var name = $(this).closest('tr').find('td:eq(1)').text();

        $('#modalId').val(id);
        $('#modalName').val(name);
        $('#displayId').text(id);
        $('#displayName').text(name);
        $('#myModal').modal('show');
    });
});
itlsoft commented 3 months ago
$(document).ready(function() {
    $('.respond-button').click(function() {
        var $row = $(this).closest('tr'); // Znajdź najbliższy wiersz tabeli
        var id = $row.find('td:nth-child(1)').text(); // Pobierz wartość Id
        var name = $row.find('td:nth-child(2)').text(); // Pobierz wartość Name

        // Przypisz wartości do pól input w oknie modalnym
        $('#Id').val(id);
        $('#Name').val(name);

        // Sprawdź wartość w kolumnie Name i otwórz odpowiednie okno modalne
        if (name === 'cat') {
            $('#Modal1').modal('show');
        } else {
            $('#Modal2').modal('show');
        }
    });
});
itlsoft commented 3 months ago
DECLARE @tableName NVARCHAR(255);
DECLARE @sql NVARCHAR(MAX);

-- Pobierz nazwy wszystkich tabel rozpoczynających się od "Fw*"
DECLARE table_cursor CURSOR FOR 
SELECT name
FROM Test.sys.tables
WHERE name LIKE 'Fw%';

OPEN table_cursor;

FETCH NEXT FROM table_cursor INTO @tableName;

-- Iteruj po wszystkich znalezionych tabelach
WHILE @@FETCH_STATUS = 0
BEGIN
    -- Wyłącz wszystkie triggery na danej tabeli
    SET @sql = N'DISABLE TRIGGER ALL ON ' + QUOTENAME(@tableName);
    EXEC sp_executesql @sql;

    -- Wyłącz wszystkie contrainy na danej tabeli
    SET @sql = N'DISABLE CONSTRAINT ALL ON ' + QUOTENAME(@tableName);
    EXEC sp_executesql @sql;

    -- Usuń tabelę
    SET @sql = N'DROP TABLE ' + QUOTENAME(@tableName);
    EXEC sp_executesql @sql;

    FETCH NEXT FROM table_cursor INTO @tableName;
END

CLOSE table_cursor;
DEALLOCATE table_cursor;
itlsoft commented 3 months ago
$(document).ready(function() {
    $("#getContent").click(function() {
        // Pobierz wartość identyfikatora incydentu
        var incidentId = $("#incident_id").val();

        // Dodaj klasę "loader" do diva podczas ładowania danych
        $("#loadingarea").addClass("loader");

        // Wywołanie funkcji AJAX
        $.ajax({
            url: "http://test.com/api/test",
            type: "GET",
            data: { incident_id: incidentId },
            success: function(response) {
                // Dodaj zwrócone dane HTML do diva
                $("#ContentPreview").html(response);

                // Usuń klasę "loader" po zakończeniu ładowania danych
                $("#loadingarea").removeClass("loader");

                // Dodaj styl do diva po zakończeniu akcji sukcesem
                $("#modal-content2").css("max-width", "90%");

                // Utwórz plik Blob z danymi e-maila
                var blob = new Blob([response], { type: "message/rfc822" });

                // Zapisz identyfikator incydentu w atrybucie data
                $("#SaveContentArea").attr("data-incident-id", incidentId);

                // Zapisz Blob w atrybucie data
                $("#SaveContentArea").attr("data-email-blob", URL.createObjectURL(blob));
            },
            error: function(xhr, status, error) {
                // Obsługa błędu
                console.error("Wystąpił błąd: " + xhr.status + " - " + error);

                // Usuń klasę "loader" w przypadku błędu
                $("#loadingarea").removeClass("loader");
            }
        });
    });

    // Obsługa kliknięcia przycisku "Download Content"
    $("#SaveContent").click(function() {
        // Pobierz identyfikator incydentu
        var incidentId = $("#SaveContentArea").attr("data-incident-id");

        // Pobierz Blob z atrybutu data
        var blobUrl = $("#SaveContentArea").attr("data-email-blob");

        // Utwórz link do pobrania pliku
        var downloadLink = document.createElement("a");
        downloadLink.href = blobUrl;
        downloadLink.download = incidentId + ".eml"; // Nazwa pliku

        // Dodaj link do dokumentu i kliknij w nim
        document.body.appendChild(downloadLink);
        downloadLink.click();

        // Usuń link z dokumentu
        document.body.removeChild(downloadLink);
    });
});
itlsoft commented 3 months ago
$(document).ready(function() {
    $("#getContent").click(function() {
        // Pobierz wartość identyfikatora incydentu
        var incidentId = $("#incident_id").val();

        // Dodaj klasę "loader" do diva podczas ładowania danych
        $("#loadingarea").addClass("loader");

        // Wywołanie funkcji AJAX
        $.ajax({
            url: "http://test.com/api/test",
            type: "GET",
            data: { incident_id: incidentId },
            success: function(response) {
                // Dodaj zwrócone dane HTML do diva
                $("#ContentPreview").html(response);

                // Usuń klasę "loader" po zakończeniu ładowania danych
                $("#loadingarea").removeClass("loader");

                // Dodaj styl do diva po zakończeniu akcji sukcesem
                $("#modal-content2").css("max-width", "90%");

                // Utwórz plik Blob z danymi e-maila
                var blob = new Blob([response], { type: "message/rfc822" });

                // Utwórz link do pobrania pliku
                var downloadLink = document.createElement("a");
                downloadLink.href = URL.createObjectURL(blob);
                downloadLink.download = incidentId + ".eml"; // Nazwa pliku

                // Dodaj link do dokumentu i kliknij w nim
                document.body.appendChild(downloadLink);
                downloadLink.click();

                // Usuń link z dokumentu
                document.body.removeChild(downloadLink);
            },
            error: function(xhr, status, error) {
                // Obsługa błędu
                console.error("Wystąpił błąd: " + xhr.status + " - " + error);

                // Usuń klasę "loader" w przypadku błędu
                $("#loadingarea").removeClass("loader");
            }
        });
    });
});
itlsoft commented 2 months ago
document.addEventListener('DOMContentLoaded', function() {
    var sortingRadio = document.getElementsByName('sorting');
    var reloadButton = document.getElementById('reloadButton');

    // Dodajemy event listener dla przycisku reload
    reloadButton.addEventListener('click', function() {
        var selectedValue = "";
        // Sprawdzamy, który radio button jest zaznaczony
        for (var i = 0; i < sortingRadio.length; i++) {
            if (sortingRadio[i].checked) {
                selectedValue = sortingRadio[i].value;
                break;
            }
        }

        // Tworzymy nowy URL z wybraną wartością radio buttona
        var currentUrl = window.location.href;
        var newUrl;
        if (currentUrl.indexOf('?') !== -1) {
            newUrl = currentUrl.split('?')[0] + '?sorting=' + selectedValue;
        } else {
            newUrl = currentUrl + '?sorting=' + selectedValue;
        }

        // Przeładowujemy stronę z nowym URL
        window.location.href = newUrl;
    });
});
itlsoft commented 2 months ago
$(document).ready(function() {
    // Sprawdzenie, czy w localStorage jest zapisana ostatnio wybrana opcja filtra
    var lastSelectedFilter = localStorage.getItem('lastSelectedFilter');
    if (lastSelectedFilter) {
        // Zaznaczenie odpowiedniego przycisku radio na podstawie wartości z localStorage
        $('#' + lastSelectedFilter).prop('checked', true);

        // Wywołanie funkcji filtrowania danych z ostatnio wybranym filtrem
        if (lastSelectedFilter === 'deleted') {
            filterDeleted($('#' + lastSelectedFilter).val());
        } else {
            filterOther($('#' + lastSelectedFilter).val());
        }
    }

    // Obsługa kliknięcia przycisku #RefreshData
    $('#RefreshData').on('click', function() {
        // Pobranie wartości zaznaczonego przycisku radio
        var selectedFilter = $('input[name="status"]:checked').attr('id');

        // Zapisanie wybranego filtra do localStorage
        localStorage.setItem('lastSelectedFilter', selectedFilter);

        // Wywołanie funkcji pobierającej dane z API i aktualizującej tabelę
        refreshData(selectedFilter);
    });

    // Funkcja do odświeżania danych i filtracji (analogicznie jak wcześniej)
    function refreshData(selectedFilter) {
        // Tutaj pobierz dane z API za pomocą Ajax i zaktualizuj tabelę
        // Funkcja filterData() również pozostaje taka sama
        // Możesz wykorzystać przykładowy kod z poprzedniej odpowiedzi
    }

    // Funkcja do filtrowania danych w przypadku wybrania opcji "Deleted"
    function filterDeleted(value) {
        console.log("Filtering deleted:", value);
        // Tutaj możesz dodać logikę filtrowania dla opcji "Deleted"
    }

    // Funkcja do filtrowania danych w pozostałych przypadkach
    function filterOther(value) {
        console.log("Filtering other:", value);
        // Tutaj możesz dodać logikę filtrowania dla pozostałych opcji
    }
});
itlsoft commented 1 month ago

PSX_20240521_144045

itlsoft commented 1 month ago
from docx import Document
from datetime import datetime

def update_docx(template_path, output_path, par1, par2, par3):
    # Otwórz szablon dokumentu
    doc = Document(template_path)

    # Funkcja do podmiany tekstu w paragrafach
    def replace_in_paragraph(paragraph, old_text, new_text):
        if old_text in paragraph.text:
            inline = paragraph.runs
            for item in inline:
                if old_text in item.text:
                    item.text = item.text.replace(old_text, new_text)

    # Funkcja do podmiany tekstu w tabelach
    def replace_in_table(table, old_text, new_text):
        for row in table.rows:
            for cell in row.cells:
                for paragraph in cell.paragraphs:
                    replace_in_paragraph(paragraph, old_text, new_text)

    # Podmiana parametrów w całym dokumencie
    for paragraph in doc.paragraphs:
        replace_in_paragraph(paragraph, "<Par1>", par1)
        replace_in_paragraph(paragraph, "<Par2>", par2)
        replace_in_paragraph(paragraph, "<Par3>", par3)

    # Podmiana parametrów w tabelach (jeśli istnieją)
    for table in doc.tables:
        replace_in_table(table, "<Par1>", par1)
        replace_in_table(table, "<Par2>", par2)
        replace_in_table(table, "<Par3>", par3)

    # Zapisanie nowego dokumentu
    doc.save(output_path)

# Przykładowe użycie funkcji
username = "UserName"
current_date = datetime.now()
month = current_date.strftime("%B")
year = current_date.year

template_path = "template.docx"
output_path = f"{username}_{month}_{year}_ABC.docx"

par1 = "Wartość1"
par2 = "Wartość2"
par3 = "Wartość3"

update_docx(template_path, output_path, par1, par2, par3)
itlsoft commented 1 month ago

IMG-20240522-WA0004

itlsoft commented 2 weeks ago
import re

def extract_email_addresses(messagebody):
    # Dictionary to store the results
    email_addresses = {'To': [], 'CC': [], 'BCC': []}

    # Regular expression pattern to match email addresses within <>
    email_pattern = r'<([^<>]+)>'

    # Function to extract emails for a specific field (To, CC, BCC)
    def extract_emails(field):
        # Regex to find the specific field line
        field_pattern = re.compile(rf'{field}:\s*(.*)', re.IGNORECASE)
        match = field_pattern.search(messagebody)
        if match:
            # Extract emails using the previously defined email_pattern
            emails = re.findall(email_pattern, match.group(1))
            return emails
        return []

    # Extract emails for To, CC, and BCC fields
    email_addresses['To'] = extract_emails('To')
    email_addresses['CC'] = extract_emails('CC')
    email_addresses['BCC'] = extract_emails('BCC')

    return email_addresses

# Example usage
messagebody = '''
To: "test@gmail.com" <test@gmail.com>, "test2@gmail.com" <test2@gmail.com>, "test3@gmail.com" <test3@gmail.com>
CC: "test@gmail.com" <test@gmail.com>, "test2@gmail.com" <test2@gmail.com>, "test3@gmail.com" <test3@gmail.com>
BCC: "test@gmail.com" <test@gmail.com>, "test2@gmail.com" <test2@gmail.com>, "test3@gmail.com" <test3@gmail.com>
'''

result = extract_email_addresses(messagebody)
print(result)
itlsoft commented 2 weeks ago

r'([^<>@]+@[^<@]+)>'