Burp labs week 4: Errors in my methodology
Posted on May 24, 2020
Not as much progress compared to the previous week, both due the fact it was a busy week at work and because I tackled some more difficult labs:
Which brings me to my first point. Once I started working on the Server-side template injection and HTTP request smuggling modules, the time I spent on a lab increased exponentially as the complexity of the labs increased too. A better methodology would be applying the timeframes used in my last post and applying them on a step by step basis since those labs tend to involve multiple steps, but even then reading the documentation necessary for server-side template injection can take you substantial amounts of time.
I've learned a lot and I'm still learning a lot. I'm currently avoiding the SQL Injections module as, frankly, I haven't seen a case of SQL Injection in the wild in years. There's enough variance between modules and individual labs to keep it fresh, but I am starting to feel like going back to HackTheBox or some of my other side projects. I'll keep going though, at this rate I should be done in the next 2 weeks and then I'll have a more substantial writeup on the lab experience and future projects. As always, writeups are available on my github page. Tired now.


8.13. Date and Time Functions and Operators
Date and Time Operators
| Operator | Example | Result |
|---|---|---|
+ |
date '2012-08-08' + interval '2' day |
2012-08-10 |
+ |
time '01:00' + interval '3' hour |
04:00:00.000 |
+ |
timestamp '2012-08-08 01:00' + interval '29' hour |
2012-08-09 06:00:00.000 |
+ |
timestamp '2012-10-31 01:00' + interval '1' month |
2012-11-30 01:00:00.000 |
+ |
interval '2' day + interval '3' hour |
2 03:00:00.000 |
+ |
interval '3' year + interval '5' month |
3-5 |
- |
date '2012-08-08' - interval '2' day |
2012-08-06 |
- |
time '01:00' - interval '3' hour |
22:00:00.000 |
- |
timestamp '2012-08-08 01:00' - interval '29' hour |
2012-08-06 20:00:00.000 |
- |
timestamp '2012-10-31 01:00' - interval '1' month |
2012-09-30 01:00:00.000 |
- |
interval '2' day - interval '3' hour |
1 21:00:00.000 |
- |
interval '3' year - interval '5' month |
2-7 |
Time Zone Conversion
The AT TIME ZONE
operator sets the time zone of a timestamp:
SELECT timestamp '2012-10-31 01:00 UTC';
2012-10-31 01:00:00.000 UTC
SELECT timestamp '2012-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles';
2012-10-30 18:00:00.000 America/Los_Angeles
Date and Time Functions
-
current_date -> date
Returns the current date as of the start of the query.
-
current_time -> time with time zone
Returns the current time as of the start of the query.
-
current_timestamp -> timestamp with time zone
Returns the current timestamp as of the start of the query.
-
current_timezone
() → varchar Returns the current time zone in the format defined by IANA (e.g.,
America/Los_Angeles
) or as fixed offset from UTC (e.g.,+08:35
)
-
date
(x) → date This is an alias for
CAST(x AS date)
.
-
from_iso8601_timestamp
(string) → timestamp with time zone Parses the ISO 8601 formatted
string
into atimestamp with time zone
.
-
from_iso8601_date
(string) → date Parses the ISO 8601 formatted
string
into adate
.
-
from_unixtime
(unixtime) → timestamp Returns the UNIX timestamp
unixtime
as a timestamp.
-
from_unixtime
(unixtime, string) → timestamp with time zone Returns the UNIX timestamp
unixtime
as a timestamp with time zone usingstring
for the time zone.
-
from_unixtime
(unixtime, hours, minutes) → timestamp with time zone Returns the UNIX timestamp
unixtime
as a timestamp with time zone usinghours
andminutes
for the time zone offset.
-
localtime -> time
Returns the current time as of the start of the query.
-
localtimestamp -> timestamp
Returns the current timestamp as of the start of the query.
-
now
() → timestamp with time zone This is an alias for
current_timestamp
.
-
to_iso8601
(x) → varchar Formats
x
as an ISO 8601 string.x
can be date, timestamp, or timestamp with time zone.
-
to_milliseconds
(interval) → bigint Returns the day-to-second
interval
as milliseconds.
-
to_unixtime
(timestamp) → double Returns
timestamp
as a UNIX timestamp.
Note
The following SQL-standard functions do not use parenthesis:
current_date
current_time
current_timestamp
localtime
localtimestamp
Truncation Function
The date_trunc
function supports the following units:
| Unit | Example Truncated Value |
|---|---|
second |
2001-08-22 03:04:05.000 |
minute |
2001-08-22 03:04:00.000 |
hour |
2001-08-22 03:00:00.000 |
day |
2001-08-22 00:00:00.000 |
week |
2001-08-20 00:00:00.000 |
month |
2001-08-01 00:00:00.000 |
quarter |
2001-07-01 00:00:00.000 |
year |
2001-01-01 00:00:00.000 |
The above examples use the timestamp 2001-08-22 03:04:05.321
as the input.
-
date_trunc
(unit, x) → [same as input] Returns
x
truncated tounit
.
Interval Functions
The functions in this section support the following interval units:
| Unit | Description |
|---|---|
millisecond |
Milliseconds |
second |
Seconds |
minute |
Minutes |
hour |
Hours |
day |
Days |
week |
Weeks |
month |
Months |
quarter |
Quarters of a year |
year |
Years |
-
date_add
(unit, value, timestamp) → [same as input] Adds an interval
value
of typeunit
totimestamp
. Subtraction can be performed by using a negative value.
-
date_diff
(unit, timestamp1, timestamp2) → bigint Returns
timestamp2 - timestamp1
expressed in terms ofunit
.
Duration Function
The parse_duration
function supports the following units:
| Unit | Description |
|---|---|
ns |
Nanoseconds |
us |
Microseconds |
ms |
Milliseconds |
s |
Seconds |
m |
Minutes |
h |
Hours |
d |
Days |
-
parse_duration
(string) → interval Parses
string
of formatvalue unit
into an interval, wherevalue
is fractional number ofunit
values:SELECT parse_duration('42.8ms'); -- 0 00:00:00.043 SELECT parse_duration('3.81 d'); -- 3 19:26:24.000 SELECT parse_duration('5m'); -- 0 00:05:00.000
MySQL Date Functions
The functions in this section use a format string that is compatible with
the MySQL date_parse
and str_to_date
functions. The following table,
based on the MySQL manual, describes the format specifiers:
| Specifier | Description |
|---|---|
%a |
Abbreviated weekday name (Sun .. Sat ) |
%b |
Abbreviated month name (Jan .. Dec ) |
%c |
Month, numeric (1 .. 12 ) [4] |
%D |
Day of the month with English suffix (0th , 1st , 2nd , 3rd , …) |
%d |
Day of the month, numeric (01 .. 31 ) [4] |
%e |
Day of the month, numeric (1 .. 31 ) [4] |
%f |
Fraction of second (6 digits for printing: 000000 .. 999000 ; 1 - 9 digits for parsing: 0 .. 999999999 ) [1] |
%H |
Hour (00 .. 23 ) |
%h |
Hour (01 .. 12 ) |
%I |
Hour (01 .. 12 ) |
%i |
Minutes, numeric (00 .. 59 ) |
%j |
Day of year (001 .. 366 ) |
%k |
Hour (0 .. 23 ) |
%l |
Hour (1 .. 12 ) |
%M |
Month name (January .. December ) |
%m |
Month, numeric (01 .. 12 ) [4] |
%p |
AM or PM |
%r |
Time, 12-hour (hh:mm:ss followed by AM or PM ) |
%S |
Seconds (00 .. 59 ) |
%s |
Seconds (00 .. 59 ) |
%T |
Time, 24-hour (hh:mm:ss ) |
%U |
Week (00 .. 53 ), where Sunday is the first day of the week |
%u |
Week (00 .. 53 ), where Monday is the first day of the week |
%V |
Week (01 .. 53 ), where Sunday is the first day of the week; used with %X |
%v |
Week (01 .. 53 ), where Monday is the first day of the week; used with %x |
%W |
Weekday name (Sunday .. Saturday ) |
%w |
Day of the week (0 .. 6 ), where Sunday is the first day of the week [3] |
%X |
Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V |
%x |
Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v |
%Y |
Year, numeric, four digits |
%y |
Year, numeric (two digits) [2] |
%% |
A literal % character |
%x |
x , for any x not listed above |
| [1] | Timestamp is truncated to milliseconds. |
| [2] | When parsing, two-digit year format assumes range 1970 .. 2069 , so “70” will result in year 1970 but “69” will produce 2069 . |
| [3] | This specifier is not supported yet. Consider using day_of_week() (it uses 1-7 instead of 0-6 ). |
| [4] | (1, 2, 3, 4) This specifier does not support 0 as a month or day. |
Warning
The following specifiers are not currently supported: %D %U %u %V %w %X
-
date_format
(timestamp, format) → varchar Formats
timestamp
as a string usingformat
.
-
date_parse
(string, format) → timestamp Parses
string
into a timestamp usingformat
.
Java Date Functions
The functions in this section use a format string that is compatible with JodaTime’s DateTimeFormat pattern format.
-
format_datetime
(timestamp, format) → varchar Formats
timestamp
as a string usingformat
.
-
parse_datetime
(string, format) → timestamp with time zone Parses
string
into a timestamp with time zone usingformat
.
Extraction Function
The extract
function supports the following fields:
| Field | Description |
|---|---|
YEAR |
year() |
QUARTER |
quarter() |
MONTH |
month() |
WEEK |
week() |
DAY |
day() |
DAY_OF_MONTH |
day() |
DAY_OF_WEEK |
day_of_week() |
DOW |
day_of_week() |
DAY_OF_YEAR |
day_of_year() |
DOY |
day_of_year() |
YEAR_OF_WEEK |
year_of_week() |
YOW |
year_of_week() |
HOUR |
hour() |
MINUTE |
minute() |
SECOND |
second() |
TIMEZONE_HOUR |
timezone_hour() |
TIMEZONE_MINUTE |
timezone_minute() |
The types supported by the extract
function vary depending on the
field to be extracted. Most fields support all date and time types.
-
extract
(field FROM x) → bigint Returns
field
fromx
.Note
This SQL-standard function uses special syntax for specifying the arguments.
Convenience Extraction Functions
-
day
(x) → bigint Returns the day of the month from
x
.
-
day_of_month
(x) → bigint This is an alias for
day()
.
-
day_of_week
(x) → bigint Returns the ISO day of the week from
x
. The value ranges from1
(Monday) to7
(Sunday).
-
day_of_year
(x) → bigint Returns the day of the year from
x
. The value ranges from1
to366
.
-
dow
(x) → bigint This is an alias for
day_of_week()
.
-
doy
(x) → bigint This is an alias for
day_of_year()
.
-
hour
(x) → bigint Returns the hour of the day from
x
. The value ranges from0
to23
.
-
millisecond
(x) → bigint Returns the millisecond of the second from
x
.
-
minute
(x) → bigint Returns the minute of the hour from
x
.
-
month
(x) → bigint Returns the month of the year from
x
.
-
quarter
(x) → bigint Returns the quarter of the year from
x
. The value ranges from1
to4
.
-
second
(x) → bigint Returns the second of the minute from
x
.
-
timezone_hour
(timestamp) → bigint Returns the hour of the time zone offset from
timestamp
.
-
timezone_minute
(timestamp) → bigint Returns the minute of the time zone offset from
timestamp
.
-
week
(x) → bigint Returns the ISO week of the year from
x
. The value ranges from1
to53
.
-
week_of_year
(x) → bigint This is an alias for
week()
.
-
year
(x) → bigint Returns the year from
x
.
-
year_of_week
(x) → bigint Returns the year of the ISO week from
x
.
-
yow
(x) → bigint This is an alias for
year_of_week()
.


This is the official AtomicDEX mobile beta program channel -
Android: https://play.google.com/store/apps/details?id=com.komodoplatform.atomicdex - iOS: https://testflight.apple.com/join/c2mOLEoC - Please use https://github.com/KomodoPlatform/atomicdex/issues for bug reports and feature requests. For critical security bug reports please do send us your encrypted (https://pgp.mit.edu/pks/lookup?op=get&search=0x379287998EE6CF47) report to<EMAIL_ADDRESS>and allow up to 24h for reply. For atomicDEX API (mm2) related issue reports or feature requests please do use https://github.com/KomodoPlatform/atomicDEX-API/issues
100 messages
Before 05-Dec-19 12:00 AM
vanity3331-Oct-19 11:59 AM
but the other way round
Cryptoon31-Oct-19 11:59 AM
when I check the transactions it says 0 confirmations for the incoming transaction for 7.777 of the balance I am not seeing
dudezmobi31-Oct-19 11:59 AM
High occurence of.failed.swaps
Sharifa31-Oct-19 12:00 PM
@ca333 hello, did the stress test started?
Cryptoon31-Oct-19 12:01 PM
@Sharifa yes it has started one minute ago
Dirty Moe31-Oct-19 12:01 PM
ive started!
Sharifa31-Oct-19 12:01 PM
@Cryptoon thank you
kmd.dex31-Oct-19 12:02 PM
let's get ready to rumble
1
JaNuS31-Oct-19 12:02 PM
stuck at order matching anyone else?
Cryptoon31-Oct-19 12:02 PM
turning of my mobile hotspot and switching to wifi fixed it
I’ve accepted over 10 swaps, waiting for over 15 minutes but nothing is showing up in my history
NWhiskeyTango31-Oct-19 12:16 PM
I'm swaping 1:1
But i show no completed oders
wookie31-Oct-19 12:16 PM
Do I have to stay on the confirmation page until 3/3 steps are completed?
ronyi31-Oct-19 12:17 PM
I have 0,1 rick to 0,1 morty and 0,1morty and 0,1rick orders, but nothing happening..
wookie31-Oct-19 12:17 PM
I have orders selling at a loss but still nothing happening
Hooftly31-Oct-19 12:17 PM
gonn suck if we cant do 30 swaps :(
StrangerHereMyself31-Oct-19 12:17 PM
what does it mean when the cancel button disappears for an order?
MdAmazing31-Oct-19 12:17 PM
Put some up too
wookie31-Oct-19 12:18 PM
I’ve put up over 30 orders selling at a loss nothing happening
Sharifa31-Oct-19 12:18 PM
Looks like stress test failed ??
coingirl8731-Oct-19 12:18 PM
Same for me....20 open orders...nothing happened
Artist31-Oct-19 12:18 PM
I am creating new order for each seap
smk762 - dracocanis ominator31-Oct-19 12:18 PM
maybe having so many orders active at the same time is not a good idea.
RNI31-Oct-19 12:18 PM
can't set 1 morty
Artist31-Oct-19 12:18 PM
Swap
Is that ok.
vogelfreund8831-Oct-19 12:18 PM
Same here... nothing yesterday it worked well
ca33331-Oct-19 12:18 PM
HINT: cancel your non-matched orders and try to swap against the orders with a big volume (one has 1000 and the other one a five figure RICK/MORTY amount) - this will release DEX network resources
you can only trade as many as you have utxos availble for. so if you only have one utxo, one trade until the unspent tx outputs return in next block
Cryptoon31-Oct-19 12:19 PM
414 orders in the books
ca33331-Oct-19 12:19 PM
there are MANY hundred orders ongoing - and the orders that are open in a maker-mode (the ones with the cancel button) are preventing most of you to swap
wookie31-Oct-19 12:19 PM
Anything after the stress test start time has not gone through
dudezmobi31-Oct-19 12:20 PM
Randomly cancel button appears and disappears on android
3
3
smk762 - dracocanis ominator31-Oct-19 12:20 PM
you're better off trading sequentially, not all at once
Artist31-Oct-19 12:20 PM
Hello anybody?
modereck31-Oct-19 12:20 PM
@dudezmobi maybe the app is processing the order
wookie31-Oct-19 12:20 PM
Do I need to stay on the confirmations screen to wait until 3/3 steps are completed?
modereck31-Oct-19 12:20 PM
happened to me
Cryptoon31-Oct-19 12:20 PM
@wookie normally no
you do need to stay in the app
smk762 - dracocanis ominator31-Oct-19 12:21 PM
leave app open is best. if you plug into charger, mine stays opne
you can go to other screen but dont close app
Artist31-Oct-19 12:21 PM
Creating new order for each swap is that ok?
Or should I match order book?
kmd.dex31-Oct-19 12:22 PM
41 tx i made with vpn on
vanity3331-Oct-19 12:22 PM
i choose from order book but not even step 1 is completing
kmd.dex31-Oct-19 12:22 PM
now with my real ip to decond phone
i am curious about the result if this sttess
Cryptoon31-Oct-19 12:22 PM
@Artist best luck to match orderbook I would think
Sir Seven31-Oct-19 12:22 PM
@wookieDo I need to stay on the confirmations screen to wait until 3/3 steps are completed?
On iOS - yes, on Android you can swap freely in background.
ronyi31-Oct-19 12:22 PM
Nothing happening, i canceled my open orders... created new, but step 0/3... so in my side is useless...
Artist31-Oct-19 12:22 PM
But is it ok if you create new
kmd.dex31-Oct-19 12:22 PM
fuck. swipe faild
smk762 - dracocanis ominator31-Oct-19 12:22 PM
dont have to match book, you could outbid it
FtrSaroth31-Oct-19 12:23 PM
All my orders stucked on 0/3
1
vanity3331-Oct-19 12:23 PM
0/3 here as well
Andersen31-Oct-19 12:23 PM
0/3
dudezmobi31-Oct-19 12:23 PM
This is a frustratingly good stress test
smk762 - dracocanis ominator31-Oct-19 12:23 PM
be patient, there is a flood as we begin and the script spammers try things. it should level out
Cryptoon31-Oct-19 12:23 PM
0/3 just means you are waiting to match
Mark8131-Oct-19 12:23 PM
Background services are overloaded on marketmaker 2.0. that has caused everything yo stall.


{extend name="public:header" /} {block name="css"} {/block} {block name="main"} {include file="public:left" /} {/block} {block name="js"} {/block}


| lib/ |
|
94.59% |
35/37 |
50% |
4/8 |
75% |
3/4 |
94.59% |
35/37 |
| lib/classes/ |
|
80.82% |
316/391 |
68.15% |
107/157 |
94.12% |
48/51 |
82.48% |
306/371 |
| lib/plugins/awsCompileFunctions/ |
|
100% |
21/21 |
62.5% |
5/8 |
100% |
2/2 |
100% |
21/21 |
| lib/plugins/awsCompileS3Events/ |
|
100% |
21/21 |
100% |
4/4 |
100% |
2/2 |
100% |
21/21 |
| lib/plugins/awsCompileScheduledEvents/ |
|
100% |
14/14 |
85.71% |
6/7 |
100% |
2/2 |
100% |
14/14 |
| lib/plugins/awsDeploy/ |
|
100% |
22/22 |
100% |
0/0 |
100% |
1/1 |
100% |
22/22 |
| lib/plugins/awsDeploy/lib/ |
|
97.33% |
146/150 |
84.21% |
32/38 |
92.31% |
12/13 |
97.32% |
145/149 |
| lib/plugins/awsInvoke/ |
|
88.68% |
47/53 |
77.42% |
24/31 |
100% |
5/5 |
88.46% |
46/52 |
| lib/plugins/awsRemove/ |
|
100% |
17/17 |
100% |
0/0 |
100% |
1/1 |
100% |
17/17 |
| lib/plugins/awsRemove/lib/ |
|
89.36% |
42/47 |
70% |
7/10 |
71.43% |
5/7 |
89.13% |
41/46 |
| lib/plugins/create/ |
|
97.56% |
40/41 |
100% |
6/6 |
100% |
6/6 |
97.56% |
40/41 |
| lib/plugins/deploy/ |
|
100% |
3/3 |
100% |
0/0 |
100% |
1/1 |
100% |
3/3 |
| lib/plugins/helloWorld/ |
|
29.41% |
5/17 |
0% |
0/6 |
25% |
1/4 |
29.41% |
5/17 |
| lib/plugins/invoke/ |
|
100% |
3/3 |
100% |
0/0 |
100% |
1/1 |
100% |
3/3 |
| lib/plugins/remove/ |
|
100% |
3/3 |
100% |
0/0 |
100% |
1/1 |
100% |
3/3 |


6 references to PSInvocationSettings
System.Management.Automation (6)
engine\hostifaces\PowerShell.cs (1)
2241
settings = new
PSInvocationSettings
();
engine\Modules\RemoteDiscoveryHelper.cs (1)
480
var invocationSettings = new
PSInvocationSettings
{ Host = cmdlet.Host };
engine\remoting\client\remotepipeline.cs (2)
893
PSInvocationSettings settings = new
PSInvocationSettings
();
930
PSInvocationSettings settings = new
PSInvocationSettings
();
engine\remoting\commands\PushRunspaceCommand.cs (1)
1335
PSInvocationSettings settings = new
PSInvocationSettings
()
engine\remoting\server\ServerPowerShellDriver.cs (1)
235
PSInvocationSettings settings = new
PSInvocationSettings
();


Cloud Infrastructure with Kubernetes
Who, How, Why and When?
Ben Avellone // CEO // Coastware Technologies
Coastware Technologies
- Business-class software applications and comprehensive IT services
- Adopted Kubenetes in early 2017, now managing all of Coastware's web services
- Limited time & resources to spend on infrastructure
What is Kubernetes?
"Pilot/Helmsman" in Greek
Initially built inside Google based on Borg and Omega - Google's internal systems that power search, video and advertising services
Set of tools, concepts and APIs designed to deploy, scale and maintain containers running on a cluster of machines
Building Blocks: Containers
- Contains all libraries and code needed by application
- Less overhead and lower start-up time than VMs
- Easy to compose and replace
VMs
Containers
Why Kubernetes?
Strong community: 1800+ contributors, used by F500 companies and startups alike
Runs everywhere: Public cloud, private cloud, bare metal, laptop
Batteries included: Lots of functionality out-of-the-box
Problems where Kubernetes can help
Operations
- Applications and machines crash - the more you have the more often it will happen
- Scaling infrastructure can be a slow, error-prone and manual process
- Staff need to be on-call 24/7 to respond to inevitable crisis at 3am
- Existing infrastructure is brittle and cumbersome or limited in features or guarantees
Business
- Hiring and training staff on bespoke infrastructure can be difficult and expensive
- More personnel are needed to manage ever-growing infrastructure
- Brittle infrastructure increases risk of mistakes, errors and oversights
Building Blocks: Deployment
Our application is packaged up into a container
How do we run, update and scale it?
- Manual - Humans
- Automated - Scripts
- Automated - Orchestrator
Deployment: Humans
Pros: simple - minimal tooling, configuration and setup required
Cons: not automated, error-prone, doesn't scale, problems require manual troubleshooting
Deployment: Scripts
Pros: integrates with existing infrastructure, reproducible, auditable
Cons: manual placement of containers on machines, becomes unmanageable for larger systems
Deployment: Orchestration
Pros: automated, self-healing, scalable, portable
Cons: some overhead, learning curve, new tooling
Building Blocks: Orchestrators
Scheduling: match containers to machines
- by resource needs (CPU, Memory)
- by affinity requirements (put X near Y)
- by labels (put X on a "test" machine)
Replication: run N copies
Recovery: handle machine failures
Node
Machine running Kubernetes
Pod
Group of cooperating containers
kind: Pod
metadata:
name: my-website-1
labels:
app: my-website
spec:
containers:
- name: webserver
image: my-website-v1.0
ports:
- containerPort: 80
Deployment
Manages the lifecycle of a group of pods
kind: Deployment
metadata:
name: my-website
spec:
replicas: 3
selector:
matchLabels:
app: my-website
template:
metadata:
labels:
app: my-website
spec:
containers:
- name: webserver
image: my-website-v1.0
ports:
- containerPort: 80
Service
A service forwards traffic to a group of pods
kind: Service
metadata:
name: my-website
spec:
selector:
app: my-website
ports:
- name: http
port: 8000
targetPort: 80
Labels
- Arbitrary metadata
- Attached to any API object
- Used to represent identity
- Queryable by Selectors
- The only grouping mechanism
app=my-app
role=frontend
role=backend
stage=prod
stage=dev
Selectors
- app=my-app
- role=front-end
- role=back-end
- stage=prod
- stage=dev
app=my-app
role=front-end
stage=prod
app=my-app
role=front-end
stage=dev
app=my-app
role=back-end
stage=prod
app=my-app
role=back-end
stage=dev


Lighting Board Operator Duties
28 Aug 2016Before the Show
- When you arrive, uncover the Strand light board and the auxiliary console and store their covers on the shelf directly underneath them.
- Turn on the Strand Light Palette. Make sure you are in the Standard.spf show file and in Cue Only mode (unless you are utterly desperate to work in Tracking mode).
- Bring the house, stage (OL) and backstage lights up so those entering the space can see.
- Turn the auxiliary console to NIGHT and activate EP LOCKOUT.
- Make sure the vestibule lights are still on.
- Turn the ghost lights on and back off by pressing FOH twice in the work lights section.
- If there are random lights stuck on, first try Release PB (playback not peanut butter) on the Strand. If that doesn’t work, return to the Aux Console and choose ALL OFF before returning to NIGHT. This should reset all the dimmers.
- Determine if there needs to be a lot of talking between the lighting operator and the stage manager (i.e. a stage manager calling cues from FOH). If so, I strongly suggest you move the lighting board to the followspot booth. Bring a ClearCom beltpack, headset and cable. Only do this if you have enough time (allow 30 min to fully get reset up there).
- Walk around the house and check that none of the house lights have burnt out. Do a channel check to make sure all stage lights are functional. If not, a lamp is probably out, and you’ll need to replace it (refer to the Lighting Basics manual).
- Meet with the stage manager, sound board op, visiting artists and crew.
- Take notes on lighting cues needed.
- Determine if any specials are needed for the show. If they are, spike the stage in those locations, bring them up from the RFU, go up to the catwalks, and focus them. Lighting units that are specials are marked with yellow spike tape on the pipe next to them. Once focused, confirm the looks with the visiting artists/crew.
- Confirm with the visiting artists/crew the entire flow of the show in terms of lighting.
- Determine if the weed lights should stay on throughout the performance or if the house should to go completely dark. The extra light allows late comers to find seats and audience members to read their programs. If it’s a film screening though, you will turn them off in order to go totally dark.
- If you plan to change a number of board settings/reprogram subs/re-patch/record cues, create a new showfile for the show.
- If you have time and are confident about the show going as planned, record a cue list for the show on the lighting board. Otherwise, you can record all the lighting looks that you will need on the twelve submasters/looks on SubPage 2 or 3.
- If you need to turn off the lights on everyone, announce “Going dark!” and await for confirmation before you actually go dark.
- Make sure EP LOCKOUT is enabled on the auxiliary panel before doors open to the public. If you forget this, anyone may walk into a vestibule and change the stage/house looks.
- Lower the backstage work lights to about 15%. Confirm level is ok with the Stage Manager.
During the Show
- Follow along with the program.
- Change the lights according to your notes from earlier. Communicate with the stage manager.
- If there is an intermission, bring stage lights down and then house lights up at the end of the first half. Usually some crossfade is acceptable (once under 40%). Other times, for a more dramatic effect, you would want to go totally black on stage before bringing the house lights up.
- On your cue, at the end of intermission, bring the house lights down to half.

- At the end of the show, do it all again. Bring the stage lights down and then the house lights up.
After the Show
- Once the house is mostly empty, bring up the stage work lights.
- Help the rest of the crew clean up, strike and set up for the next day.
- Once everything is cleaned, closed up, doors locked, systems off and everyone ready to leave, turn off the light board using the proper shutdown procedure.
- Retrieve the covers for the Strand and AUX console from and cover the boards.
- If you have been holding the Stage Manager key set, return it to Erin’s desk.
- If you ran into any technical troubleshooting, send Erin an email with the nature of the issue, when it happened, the troubleshooting steps you followed and the outcome. Send a full show report if you are shift leading.


To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video


Joystick routines
These functions are declared in the main Allegro header file:
#include <allegro5/allegro.h>
On Windows there are two joystick drivers, a DirectInput one and an Xinput one. If support for XInput was compiled in, then it can be enabled by calling al_set_config_value(al_get_system_config(), “joystick”, “driver”, “xinput”) before calling al_install_joystick, or by setting the same option in the allegro5.cfg configuration file. The Xinput and DirectInput drivers are mutually exclusive. The haptics subsystem will use the same driver as the joystick system does.
ALLEGRO_JOYSTICK
typedef struct ALLEGRO_JOYSTICK ALLEGRO_JOYSTICK;
This is an abstract data type representing a physical joystick.
See also: al_get_joystick
Examples:
ALLEGRO_JOYSTICK_STATE
typedef struct ALLEGRO_JOYSTICK_STATE ALLEGRO_JOYSTICK_STATE;
This is a structure that is used to hold a “snapshot” of a joystick’s axes and buttons at a particular instant. All fields public and read-only.
struct {
float axis[num_axes]; // -1.0 to 1.0
} stick[num_sticks];int button[num_buttons]; // 0 to 32767
See also: al_get_joystick_state
Examples:
ALLEGRO_JOYFLAGS
enum ALLEGRO_JOYFLAGS
- ALLEGRO_JOYFLAG_DIGITAL - the stick provides digital input
- ALLEGRO_JOYFLAG_ANALOGUE - the stick provides analogue input
(this enum is a holdover from the old API and may be removed)
See also: al_get_joystick_stick_flags
al_install_joystick
bool al_install_joystick(void)
Install a joystick driver, returning true if successful. If a joystick driver was already installed, returns true immediately.
See also: al_uninstall_joystick
Examples:
al_uninstall_joystick
void al_uninstall_joystick(void)
Uninstalls the active joystick driver. All outstanding ALLEGRO_JOYSTICK structures are invalidated. If no joystick driver was active, this function does nothing.
This function is automatically called when Allegro is shut down.
See also: al_install_joystick
al_is_joystick_installed
bool al_is_joystick_installed(void)
Returns true if al_install_joystick was called successfully.
al_reconfigure_joysticks
bool al_reconfigure_joysticks(void)
Allegro is able to cope with users connecting and disconnected joystick devices on-the-fly. On existing platforms, the joystick event source will generate an event of type ALLEGRO_EVENT_JOYSTICK_CONFIGURATION
when a device is plugged in or unplugged. In response, you should call al_reconfigure_joysticks.
Afterwards, the number returned by al_get_num_joysticks may be different, and the handles returned by al_get_joystick may be different or be ordered differently.
All ALLEGRO_JOYSTICK handles remain valid, but handles for disconnected devices become inactive: their states will no longer update, and al_get_joystick will not return the handle. Handles for devices which remain connected will continue to represent the same devices. Previously inactive handles may become active again, being reused to represent newly connected devices.
Returns true if the joystick configuration changed, otherwise returns false.
It is possible that on some systems, Allegro won’t be able to generate ALLEGRO_EVENT_JOYSTICK_CONFIGURATION
events. If your game has an input configuration screen or similar, you may wish to call al_reconfigure_joysticks when entering that screen.
See also: al_get_joystick_event_source, ALLEGRO_EVENT
Examples:
al_get_num_joysticks
int al_get_num_joysticks(void)
Return the number of joysticks currently on the system (or potentially on the system). This number can change after al_reconfigure_joysticks is called, in order to support hotplugging.
Returns 0 if there is no joystick driver installed.
See also: al_get_joystick, al_get_joystick_active
Examples:
al_get_joystick
int num) ALLEGRO_JOYSTICK * al_get_joystick(
Get a handle for a joystick on the system. The number may be from 0 to al_get_num_joysticks-1. If successful a pointer to a joystick object is returned, which represents a physical device. Otherwise NULL is returned.
The handle and the index are only incidentally linked. After al_reconfigure_joysticks is called, al_get_joystick may return handles in a different order, and handles which represent disconnected devices will not be returned.
See also: al_get_num_joysticks, al_reconfigure_joysticks, al_get_joystick_active
Examples:
al_release_joystick
void al_release_joystick(ALLEGRO_JOYSTICK *joy)
This function currently does nothing.
See also: al_get_joystick
Examples:
al_get_joystick_active
bool al_get_joystick_active(ALLEGRO_JOYSTICK *joy)
Return if the joystick handle is “active”, i.e. in the current configuration, the handle represents some physical device plugged into the system. al_get_joystick returns active handles. After reconfiguration, active handles may become inactive, and vice versa.
See also: al_reconfigure_joysticks
Examples:
al_get_joystick_name
const char *al_get_joystick_name(ALLEGRO_JOYSTICK *joy)
Return the name of the given joystick.
See also: al_get_joystick_stick_name, al_get_joystick_axis_name, al_get_joystick_button_name
Examples:
al_get_joystick_stick_name
const char *al_get_joystick_stick_name(ALLEGRO_JOYSTICK *joy, int stick)
Return the name of the given “stick”. If the stick doesn’t exist, NULL is returned.
See also: al_get_joystick_axis_name, al_get_joystick_num_sticks
Examples:
al_get_joystick_axis_name
const char *al_get_joystick_axis_name(ALLEGRO_JOYSTICK *joy, int stick, int axis)
Return the name of the given axis. If the axis doesn’t exist, NULL is returned. Indices begin from 0.
See also: al_get_joystick_stick_name, al_get_joystick_num_axes
Examples:
al_get_joystick_button_name
const char *al_get_joystick_button_name(ALLEGRO_JOYSTICK *joy, int button)
Return the name of the given button. If the button doesn’t exist, NULL is returned. Indices begin from 0.
See also: al_get_joystick_stick_name, al_get_joystick_axis_name, al_get_joystick_num_buttons
Examples:
al_get_joystick_stick_flags
int al_get_joystick_stick_flags(ALLEGRO_JOYSTICK *joy, int stick)
Return the flags of the given “stick”. If the stick doesn’t exist, NULL is returned. Indices begin from 0.
See also: ALLEGRO_JOYFLAGS
al_get_joystick_num_sticks
int al_get_joystick_num_sticks(ALLEGRO_JOYSTICK *joy)
Return the number of “sticks” on the given joystick. A stick has one or more axes.
See also: al_get_joystick_num_axes, al_get_joystick_num_buttons
Examples:
al_get_joystick_num_axes
int al_get_joystick_num_axes(ALLEGRO_JOYSTICK *joy, int stick)
Return the number of axes on the given “stick”. If the stick doesn’t exist, 0 is returned.
See also: al_get_joystick_num_sticks
Examples:
al_get_joystick_num_buttons
int al_get_joystick_num_buttons(ALLEGRO_JOYSTICK *joy)
Return the number of buttons on the joystick.
See also: al_get_joystick_num_sticks
Examples:
al_get_joystick_state
void al_get_joystick_state(ALLEGRO_JOYSTICK *joy, ALLEGRO_JOYSTICK_STATE *ret_state)
Get the current joystick state.
See also: ALLEGRO_JOYSTICK_STATE, al_get_joystick_num_buttons, al_get_joystick_num_axes
Examples:
al_get_joystick_event_source
void) ALLEGRO_EVENT_SOURCE *al_get_joystick_event_source(
Returns the global joystick event source. All joystick events are generated by this event source.
Examples:


---
layout: default-home
page-class: home
---
Configuration interface to alert franchisees and business managers to any unusual sales activity across multiple locations.Case study: Real time alerting
Part of a continuing effort to internationalise a suite of products, this application allows for simple, contextually appropriate translations.
Read more


List Scripts
Execute
Stop
Validation failed. Errors list:
Welcome to the RTP Analysis Server.
To start, select one of the scripts
Happy RTP Debugging..