Cross-Platform PowerShell framework that allows you to host REST APIs, Web Sites, and TCP/SMTP Servers
Badgerati on Issue-1046
#1046: add a Pode.Internal modu… (compare)
Badgerati on Issue-1007
#1007: set originating redirect… (compare)
Badgerati on Issue-1046
#1046: re-filter module list fo… (compare)
Badgerati on Issue-1046
#1046: fix module loading order… (compare)
Import-Module Pode -Global
. So stumped as to why it is not being found.The term 'Start-PodeServer' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
get-module Pode -All -ListAvailable
Reset-PodeWebPage
in a Modal ?Date: 2021-10-12 16:16:01
at Invoke-PodeScriptBlock, C:\Users\sgagnon\Documents\PowerShell\Modules\Pode\2.4.2\Public\Utilities.ps1: line 662
at <ScriptBlock>, <No file>: line 107
Date: 2021-10-12 16:16:01
Level: Error
ThreadId: 3
Server: WH-DESK04
Category: System.Private.CoreLib
Message: Collection was modified; enumeration operation may not execute.
StackTrace: at System.Collections.Hashtable.HashtableEnumerator.MoveNext()
at System.Management.Automation.EnumerableOps.FlattenResults(Object o, List`1 result)
at System.Management.Automation.EnumerableOps.PropertyGetterWorker(CallSite`1 getMemberBinderSite, IEnumerator enumerator, ExecutionContext context, List`1 result)
at System.Management.Automation.EnumerableOps.PropertyGetter(PSGetMemberBinder binder, IEnumerator enumerator)
at Get-PodeRoute(Closure , FunctionContext )
-ArgumentList
, or something else?
$RoomList = Import-Csv -Path D:\Deployment\Rooms.csv -Delimiter ";" -Encoding UTF8
$Tabs = @( Foreach ( $Room in $RoomList )
{
New-PodeWebTab -Name $Room.Name -Icon $Room.Icon -Layouts @(
New-PodeWebCard -Content @(
New-PodeWebText -Value 'Here is some Normal text.'
)
)
} )
Add-PodeWebPage -Name 'Rooms' -Icon google-classroom -ArgumentList $Tabs -ScriptBlock {
param ($Tabs)
New-PodeWebTabs -Tabs @($Tabs)
}
-AccessGroup
or -AccessUser
in add-PodeWebPage
cmdlet. Is there anything equivalent for AAD? Thank you!
-AccessUsers
with AAD, though you might need to set -UsernameProperty
on Set-PodeWebLoginPage
to either "preferred_username" or "email" to force a username property, rather than just use Pode.Web's default. For groups, it breaks a little bit there at the moment. The access_token I think should be a JWT and contains claims like the groups, but will need parsing - in the next version of Pode its ConvertFrom-PodeJwt
should hopefully be moved to public :)
Hey @majkinetor :D, the lowest Pode's can go down to is a minute using cron; I've never stress tested it to extreme limits but I do have a health probe running on numerous web servers which runs a minutely schedule and it's not suffered any; plus another, which is a timer, that runs every 20secs, which does the bulk of CPU/IIS/Service checks, and also running fine. The most schedules I've seen was in a Pingdom-esque site someone built, which was running like 10-20 minutely schedules without issue.
As Pode triggers schedules, they're run in their own runspace, in a pool which allows up to a max of 10 to run at the same time (we could allow this to be customised), and then queues them if the pool is full. If you did have a schedule run every minute, and one of the times it triggered it did happen to run for 2mins, then Pode would trigger the schedule another 2 times during the running one.
I've been thinking about building a scheduler like this as well in Pode, so will be interesting to see how schedules/timers perform under load 🤔
Hi @Badgerati,
i have a problem with UserFile-Authentication. I used the following code:
Start-PodeServer {
Add-PodeEndpoint -Address localhost -Port 80 -Protocol Http
Enable-PodeSessionMiddleware -Duration (10*60) -Extend
New-PodeAuthScheme -Form | Add-PodeAuthUserFile -Name 'Login' -Groups @("Admin","Developer")
Use-PodewebTemplates -Title 'Login Example'
Set-PodeWebLoginPage -Authentication Login
}
and the following users.json in the root of the Script ( SHA256-Hash of Passw0rd):
[
{
"Name": "hans",
"Username": "hans",
"Email": "hans.wurst@demo.com",
"Password": "AB38EADAEB746599F2C1EE90F8267F31F467347462764A24D71AC1843EE77FE3",
"Groups": [
"Admin",
"Developer"
],
"Metadata": {
"Created": "2022-01-05"
}
}
]
But I always get Access denied. I also tried HMAC SHA256, but to no avail. Can you give me hint what is going south here?
Hey @hvoges,
How are you generating the SHA256 of "Passw0rd"? When I do it I get: qzjq2ut0ZZnywe6Q+CZ/MfRnNHRidkok1xrBhD7nf+M=
, using:
$password = 'Passw0rd'
$crypto = [System.Security.Cryptography.SHA256]::Create()
[System.Convert]::ToBase64String($crypto.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($password)))