API: Make ns.cloud.purchaseServer() and ns.cloud.deleteServer() use hostname as provided (#2560)

This commit is contained in:
catloversg
2026-03-09 03:57:13 +07:00
committed by GitHub
parent e329082a48
commit 342dea77fa
4 changed files with 13 additions and 6 deletions

View File

@@ -30,7 +30,9 @@ export function PurchaseServerModal(props: IProps): React.ReactElement {
}
function onChange(event: React.ChangeEvent<HTMLInputElement>): void {
setHostname(event.target.value);
// Players may accidentally include whitespace in the hostname and later wonder why they cannot use the cloud APIs.
// For example, they intend the hostname to be "foobar", but type "foobar " or "foo bar" instead.
setHostname(event.target.value.replace(/\s+/g, ""));
}
return (

View File

@@ -33,9 +33,8 @@ export function NetscriptCloud(): InternalAPI<Cloud> {
return cost;
},
purchaseServer: (ctx) => (_hostname, _ram) => {
let hostname = helpers.string(ctx, "hostname", _hostname);
const hostname = helpers.string(ctx, "hostname", _hostname);
const ram = helpers.number(ctx, "ram", _ram);
hostname = hostname.replace(/\s+/g, "");
if (hostname === "") {
helpers.log(ctx, () => `Invalid argument: hostname='${hostname}' is an empty string.`);
return "";
@@ -126,8 +125,7 @@ export function NetscriptCloud(): InternalAPI<Cloud> {
},
deleteServer: (ctx) => (_name) => {
let host = helpers.string(ctx, "name", _name);
host = host.replace(/\s\s+/g, "");
const host = helpers.string(ctx, "name", _name);
const server = helpers.getNormalServer(ctx, host);
const hostname = server.hostname;

View File

@@ -40,7 +40,7 @@ export enum ServerOwnershipType {
* does not have a duplicate hostname/ip.
*/
export function safelyCreateUniqueServer(params: StandardServerConstructorParams): Server {
let hostname: string = params.hostname.replace(/ /g, `-`);
let hostname = params.hostname;
if (params.ip != null && ipExists(params.ip)) {
params.ip = createUniqueRandomIp();

View File

@@ -575,5 +575,12 @@ export const breakingChanges300: VersionBreakingChange = {
info: "ns.sleeve.travel() did not cancel the sleeve's current task. It does now.",
showWarning: false,
},
{
brokenAPIs: [{ name: "ns.cloud.purchaseServer" }, { name: "ns.cloud.deleteServer" }],
info:
"ns.cloud.purchaseServer() and ns.cloud.deleteServer() previously removed whitespace from the provided hostname inconsistently.\n" +
"They now use the hostname as provided.",
showWarning: false,
},
],
};