169 похожих чатов

Кину сюда, может ткнёте пальцем в кривые места Remove-NetIPHttpsCertBinding Add-NetIPHttpsCertBinding -ApplicationId "{00112233-4455-6677-8899-AABBCCDDEEFF}"

-CertificateHash ((Get-ChildItem -Path cert:\LocalMachine\My|Where-Object{$_.FriendlyName -eq "WinCC8"}).Thumbprint) -CertificateStoreName "My" -IpPort "0.0.0.0:443" -NullEncryption $false
$HttpListener = New-Object System.Net.HttpListener
$HttpListener.Prefixes.Add("https://+:443/")
$HttpListener.Start()
while ($HttpListener.IsListening) {
$HttpContext = $HttpListener.GetContext()
$HttpRequest = $HttpContext.Request
$HttpResponse = $HttpContext.Response
$RawUrl = $HttpRequest.RawUrl
if($RawUrl -eq "/exit"){$HttpResponse.StatusCode=302;$HttpResponse.AddHeader("location","https://"+($HttpRequest.Url|Select-String -Pattern 'https://(.+?)/').Matches.Groups[1].Value+":444")}
else{
$HttpResponse.StatusCode = 200;$HttpResponse.Headers.Add("Content-Type","text/html; charset=UTF-8")
$section="main";$page="index"
$req=($HttpRequest.Url|Select-String -Pattern '/([^?#/]+)' -AllMatches).Matches
if($req.Length -eq 3){$section=$req[1].Groups[1].Value;$page=$req[2].Groups[1].Value}
$buffer=Get-Content -Path ($PWD.Path+"\pages\"+$section+"\"+$page+".html") -Encoding UTF8
if($buffer -ne $null){
$tags_name=@{};($buffer|Select-String -Pattern '%(.+?)%\.\w+' -AllMatches).Matches.ForEach({if (-Not $tags_name.ContainsKey($_.Groups[1].Value)){$tags_name.Add($_.Groups[1].Value,$null)}})
try{
$TagSet=(New-Object -ComObject CCHMIRuntime.HMIRuntime).Tags.CreateTagSet()
$tags_name.Keys.ForEach({$TagSet.Add($_)})
$TagSet.Read()
}catch{}
if($TagSet -ne $null){$buffer=$buffer -replace '%(.+?)%\.(\w+)', {$TagSet[$_.Groups[1].Value].($_.Groups[2].Value)}}
$ResponseBuffer = [System.Text.Encoding]::UTF8.GetBytes($buffer)
$HttpResponse.ContentLength64 = $ResponseBuffer.Length
$HttpResponse.OutputStream.Write($ResponseBuffer,0,$ResponseBuffer.Length)
}
}$HttpResponse.Close()
}$HttpListener.Stop()

6 ответов

56 просмотров

Выглядит конечно жестоко) Я пробовал в контейнере небольшие вебсервисы на поше поднимать в докере, юзая вот эту штуку - https://github.com/Badgerati/Pode В целом достаточно прикольно получилось)

Dmitriy Novikov
Выглядит конечно жестоко) Я пробовал в контейнере ...

Я, если честно, и ожидал, что человек возьмёт какой-то фреймворк на pwsh. А он прям так взял и сразу быка за рога.

notme- Автор вопроса
Dr. Friedrich von Never
Я, если честно, и ожидал, что человек возьмёт како...

Мне нужно было чтобы минимум внешних зависимостей, лучше всего один файл (не считая шаблонов страниц) А так по сути нагуглил все кирпичики и просто вместе их сложил )

notme- Автор вопроса
notme
Мне нужно было чтобы минимум внешних зависимостей,...

Ещё бы PS 5.1.xxxx не подложил свинью со своим зависанием - вопще ляпота б была!

если этот, то он же однопоточный

notme- Автор вопроса
L M
если этот, то он же однопоточный

Да, однопоточный, на JS у меня тоже однопоточное синхронное решение

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта