reverse proxy – How to resolve single word domains to different IP:port combinations on local network?

I want to set up a local DNS server on my home network (like Pi-Hole or AdGuard) but add my own entries such that typing just home directs to my home assistant instance, plex directs to my plex instance, etc.

The problem I am foreseeing is that DNS can only resolve a name to an IP address, not IP:Port combo; and a bunch of my services run from the same machine (same IP). So when I type home it will go to 192.168.1.100 which is the right IP but I need to give nginx the right context to know which port to reverse-proxy to. Right now nginx is configured to redirect home.mydomain.com to the right port (and likewise for plex.mydomain.com, etc)

How do I configure the nginx reverse proxy to match on single word domains? Do i have to add an entirely different entry or can I do something to match on (home.mydomain.com OR home) in my nginx config?

Alternatively, do DNS have to resolve to an IP address? Or can i somehow configure pi-hole/AdGuard to resolve home to home.mydomain.com, which is then hairpinned back to my own network and routed by the reverse proxy?

I asked this question on (reddit)https://www.reddit.com/r/homelab/comments/jf0ant/local_dns_server_with_nginx_reverse_proxy_how_to/) and was told to use Caddy and SRV Records, but I am extremely confused how that helps me resolve single word DNS calls like home to the right IP + port.

This is (possibly) complicated by the fact that I want to do this for many words that resolve to the same IP but different ports. i.e., plex should be 192.168.1.100:plexPort, etc.

sharepoint online – Can you separate multiple values in a single string in @currentfield delimited in some way to make each value a hyperlink

I’m currently using MS’s column formatting JSON to turn a field’s string entry into a URL using the following to automatically make the ticket number entry a clickable hyperlink to our zendesk for the respective ticket number:

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "a",
  "txtContent": "@currentField",
  "attributes": {
    "target": "_blank",
    "href": "='https://URLANONYMIZED.zendesk.com/agent/tickets/' + @currentField"
  }

However, if we have multiple tickets for the same issue, it would be nice to be able to do the same for multiple values that are separated by a space, comma, or what have you so that each ticket number would link to it’s respective ticket. Is this possible? Using Office 365 hosted sharepoint if that matters any.

Why not make HDR from a single RAW automatically?

Most HDR tools will allow you to import a single RAW file and work on it without first converting it to several JPEGs. Just as when you import a series of JPEGS, the initial blend will look a little flat if the dynamic range in the original frame is compressed into a depth of 8 bits.

Here is a set of examples of a RAW file shot at ISO 400, 1/320 sec, f/11 and processed using Canon’s Digital Photo Professional (DPP).

The shot straight out of camera and converted using the in-camera settings.
enter image description here

The same shot after conventional adjustment of Brightness, Contrast, Saturation, WB, etc. Notice that to display the details in the shadows we had to give up some detail in the brighter sky.
enter image description here

Immediately after importing into the HDR tool in DPP and then converted to JPEG. Some (but not all) of the adjustments made in the previous step are retained (White Balance/Color Temperature, for example), but the HDR tool compresses the full dynamic range of the image into 8 bits which causes the image to look a little flat.
enter image description here

After adjusting the sliders in the HDR Tool to tone map the image. This allows the subtle differences between some tonal ranges to be exaggerated, While still allowing the details from both the shadows and highlights to be visible.
enter image description here

node.js – Multi regions events to be deduplicated and processed in a single region – How do I do this?

General overview

I am working on building a system that deals with an external resource which has been having issues and I am unable to switch away from it. It gives regional endpoints – this post is about handling the errors and taking actions and alerting without duplicate actions or alerts. Do note that this system is being designed to work with multiple external resources which have a serviceID to identify them.

Explaination of current state

Events are generated in multiple regions, they only happen on error cases however when an error occurs in one region it is likely that another region will have the same error on the external resource mentioned

What happens is say us-east-1 has an error and us-west-1 has one as well, both of these errors need to be processed by a single system which will take actions and alert if needed based on the error.

My current setup is pretty terrible in that it is region specific and if in the case above where there are issues in both us-east-1 and us-west-1 that the action needed will be taken twice same with the alert. This causes spam and also has a tendancy to break things in some edge cases I’ve experienced lately.

Goal

My goal is to have a system that when a single region has the issue the correct action and alert is done and when two or more regions have an issue that the action is only taken once and if needed a single alert goes out that lists the effected regions.

About the application and infrastructure

  • AWS based
  • Node.js micro services running in mix of EKS and Lambda
  • IaC via Terraform

Question

How can I design this system to handle the multi region events but have a single point where the actions and alerts are deduplicated and still retain their region for inclusion in the action (super important) and the alert?

My idea that hasn’t worked

Each region would generate the events when needed which would contain a serviceID like mentioned at the top of this post. Then on the primary region it would deduplicate the events using that service ID – I have zero clue how to do this, like using SQS queue or SNS or maybe my DB (MongoDB). Once the deduplication is done it would then send a SNS message in a fan out to 2 SQS queues which have Lambda’s attached to take either an action or alert based on the error message from the inital alert. This last part of Lamba working to do the action(s) and alerts needed is already done as it is part of the terrible existing mentioned.

Current issues with my idea

  • No deduplication working
  • Unable to get SQS/SNS messages to work across regions

I am open to any suggestions on how I could go about solving this problem of mine. Pretty much anything is possible from an approval standpoint.

bug – A REST query for a specific item using list/items(itemID) returns a single result that has data from adjacent list items. How is this possible?

This is perhaps one of the most bizarre problems/bugs I’ve ever seen with SharePoint. And, to be clear, I am only seeing it with one user (so far!), specifically using Edge (v.85.0.564.44). If I have the same user use their Chrome or Firefox browser, everything works as expected. I also have the same version of Edge on my laptop, and when I try using Edge on the same page to execute the same code, everything works as expected. So it definitely seems to be a very isolated issue, and I realize that because of that this is getting very close to being off-topic here.

But at the same time, the issue is that what seems to be a very straighforward REST query is showing bizarre results returned from the server, so it leads me to believe that something is going on with the request somehow that is causing the server to respond the way it does, so in that respect this is a question about the correct way to interact with the SharePoint REST API, and therefore on-topic.

Anyway, what is happening is… well, let me set up a very contrived, simple scenario to make it easy to illustrate what I’m seeing.

Imagine a list set up like so, which includes a multi-select lookup field:

ID    Title              AMultiLookup
--    ----------------   ------------
 1    I am Number One!   (1, 2, 3)
 2    It should be me    (4, 5, 6)
 3    The third one      (7, 8, 9)

(I’ve used the lookup IDs set in the lookup field to make it easier to see what’s happening.)

Now imagine that I send a simple REST request for item with ID 2, using the endpoint

/_api/web/lists/getbytitle('My List')/items(2)

with no additional oData query parameters – no $select, no $filter, nothing – just straight up “give me item number 2”.

Given the list data above, I would expect a result of

d: {
    AMultiLookup: {
        results: (4, 5, 6),
    },
    ID: 2,
    Id: 2,
    Title: "It should be me"
}

However, what actually gets returned is

d: {
    AMultiLookup: {
        results: (7, 8, 9),
    },
    ID: 2,
    Id: 2,
    Title: "I am Number One!"
}

Notice that although the ID in the response is the ID of the item I asked for (2), the value of the Title field is from item ID: 1 and the value of the AMultiLookup field is from item ID: 3.

What the what??? How is that possible?

I first saw this issue in another query on another page where I was applying some $select values to limit the response (so ID was not included), and I thought perhaps it was an “off by one” issue where somehow the browser was incrementing (or decrementing) the ID of the item I was querying for before the request got sent out, so therefore the server was returning the correct result, it was just my query that was messed up. But in all cases, I construct the URL like

var uri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('List Name')/items(" + desiredItemID + ")";
$.ajax({
    url: uri,
    // etc
});

and I set breakpoints after the uri string was constructed, but before the request went out, and saw that the string did include the correct item ID being requested. The fact that the ID of the requested item was not being changed was borne out by the results of the request that did not add any $select parameters and returned the ID of the item in the result, which matched what was being requested.

Also, I don’t think it’s an “off by one” browser mutation kind of error being applied to the results after they’re received, because

  • How could the browser change the string of the Title property to exactly what the Title is of a different list item?
  • The lookup IDs in the multi-lookup array were not “off by one”. It the expected result was (4,5,6) the actual result was not (5,6,7), it was (7,8,9). And in any case, in the actual data, the expected result was not in numerical order (i.e. the true expected result was (4,6,5)), while the actual result was in numerical order, which perfectly matched the value of the field in the other list item.

So I think there is compelling evidence here that a request for a single list item (by ID) is returning data from adjacent list items on both sides of the requested item.

So…. how does that happen?

I’m using jQuery 3.4.1 to make the requests, and I’m not doing anything fancy with the requests, they’re super basic, like

$.ajax({
    url: uri,
    method: 'GET',
    headers: {
        accept: 'application/json;odata=verbose'
    }
});

Could Edge be adding some extra header that confuses the server and causes that behavior? If so, it’s not inherent in Edge v.85.0.564.44, since I also have that version and it behaves fine for me.

Any ideas here would be appreciated.

php – Merge 1 Multidimensional array into a single array

I need to merge a multidimensional array to create a new array.

This is what I have

Array 
(
(0) => Array
    (
        (0) => 123  
        (1) => "Title #1"
        (2) => "Name #1"
    )
(1) => Array
    (
        (0) => 124  
        (1) => "Title #2"
        (2) => "Name #2"
    )
)

This is what I want

Array
(
   (0) => 123
   (1) => Title #1
   (2) => Name #1
   (3) => 124
   (4) => Title #2
   (5) => Name #2
)

MySQL Transform multiple rows into a single row in same table (reduce by merge group by)

Hy, i want reduce my table and updating himself (group and sum some columns, and delete rows)

Source table “table_test” :

+----+-----+-------+----------------+
| id | qty | user  | isNeedGrouping |
+----+-----+-------+----------------+
|  1 |   2 | userA |              1 | <- row to group + user A
|  2 |   3 | userB |              0 |
|  3 |   5 | userA |              0 |
|  4 |  30 | userA |              1 | <- row to group + user A
|  5 |   8 | userA |              1 | <- row to group + user A
|  6 |   6 | userA |              0 |
+----+-----+-------+----------------+

Wanted table : (Obtained by)

DROP TABLE table_test_grouped;
SET @increment = 2;
CREATE TABLE table_test_grouped
SELECT id, SUM(qty) AS qty, user, isNeedGrouping
FROM table_test
GROUP BY user, IF(isNeedGrouping = 1, isNeedGrouping, @increment := @increment + 1);
SELECT * FROM table_test_grouped;

+----+------+-------+----------------+
| id | qty  | user  | isNeedGrouping |
+----+------+-------+----------------+
|  1 |   40 | userA |              1 | <- rows grouped + user A
|  3 |    5 | userA |              0 |
|  6 |    6 | userA |              0 |
|  2 |    3 | userB |              0 |
+----+------+-------+----------------+

Problem : i can use another (temporary) table, but i want update initial table, for :

  • grouping by user and sum qty
  • replace/merge rows into only one by group

The result must be a reduce of initial table, group by user, and qty summed.

And it’s a minimal exemple, and i don’t want full replace inital from table_test_grouped, beacause in my case, i have another colum (isNeedGrouping) for decide if y group or not.

For flagged rows “isNeedGrouping”, i need grouping.
For this exemple, a way to do is sequentialy to :

CREATE TABLE table_test_grouped SELECT id, SUM(qty) AS qty, user, isNeedGrouping FROM table_test WHERE isNeedGrouping = 1 GROUP BY user ;
DELETE FROM table_test WHERE isNeedGrouping = 1 ;
INSERT INTO table_test SELECT * FROM table_test_grouped ;

Any suggestion for a simpler way?

sharepoint Designer workflow 2013 – set Item level permissions for multiple users from the single person and group fied

I am cerating a SharePoint Designer Workflow 2013.

Trigger action – When item is created.

On creation of an item I am setting unique permissions based on two person and group field from an item. (i.e. Owner and Additional Creator)

Owner –> allow multiple selection is – false

Additional Creator –> allow multiple selection is – true

I am using rest end point/addroleassignment to set unique permissions. It works perfectly for Owner field as there is alway single person for this field.

However Additional Creator field contains multiple users. I am not sure how to grant permissions to multiple users from single field through sharepoint designer.

Or how can I can iterate through all the users from Additional Creator field ans use /addroleassignment end point ?

Thanks.

Multi-stage Docker build not finishing with a single final image

I have a basic React app made with CRA, and have a multi-stage build set up as the following in my Dockerfile:

FROM node:14.13.1-alpine as base

WORKDIR /app

ENV PATH /app/node_modules/.bin:$PATH

COPY package*.json /app/
RUN npm install

COPY ./ /app/

RUN npm run build

FROM nginx:1.19.3

COPY --from=base /app/build /usr/share/nginx/html

When I build the image with docker build -t my-app:latest . it creates two images as expected: first the image using node and then the second image using nginx. When I check my images however, the first image is visible and wasn’t discarded when the build completed.

First image is visible as <none> and the completed image is my-app

Is this expected behavior, or is there supposed to be only one image created when finished?

OpenStack single interface install – Server Fault

Good day! I only have one physical port and one public IP address. I installed OpenStack but my guests don’t have Internet access. After reading the documentation, I realized that I need to raise a virtual router and create a provider network – but this is impossible because the router takes an additional external IP address, and the provider’s network raises the bridge and I lose ssh access to the host, plus I am banned by the colocation provider who has my server since the additional external IP is not paid. I tried to use libvirt default network – but without success. Please tell me how to distribute the Internet to guests without modifying the iptables rules and configuring bridge ? I don’t want to put proxmox =]