Revert "Rip out the mod download function because steamcmd is shit"
This reverts commit f2f0df0f17
.
This commit is contained in:
parent
a33a74a4e8
commit
fce8632639
5 changed files with 70 additions and 14 deletions
18
lib/credentials.dart
Normal file
18
lib/credentials.dart
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import 'package:hive/hive.dart';
|
||||||
|
|
||||||
|
part 'credentials.g.dart';
|
||||||
|
|
||||||
|
@HiveType(typeId: 1)
|
||||||
|
class Credentials {
|
||||||
|
@HiveField(0)
|
||||||
|
String username;
|
||||||
|
|
||||||
|
@HiveField(1)
|
||||||
|
String password;
|
||||||
|
|
||||||
|
@HiveField(2)
|
||||||
|
String secret;
|
||||||
|
|
||||||
|
Credentials(
|
||||||
|
{required this.username, required this.password, required this.secret});
|
||||||
|
}
|
|
@ -9,6 +9,43 @@ import 'package:servermanager/serversettings.dart';
|
||||||
import 'package:servermanager/settings.dart';
|
import 'package:servermanager/settings.dart';
|
||||||
import 'package:servermanager/statemachine.dart';
|
import 'package:servermanager/statemachine.dart';
|
||||||
|
|
||||||
|
Future<void> doDownloadMods(String modsFolder) async {
|
||||||
|
Settings settings = Settings();
|
||||||
|
|
||||||
|
// Now, invoke SteamCmd to download the workshop mods. This is an authenticated action, and does require Scmd2fa
|
||||||
|
var result = await Process.run(settings.getSteamCmd2FA(),
|
||||||
|
["--raw", "--secret", settings.inst!.steam_creds!.secret]);
|
||||||
|
var code = result.stdout as String;
|
||||||
|
|
||||||
|
// Build download command
|
||||||
|
List<String> manifest = [
|
||||||
|
"+@sSteamCmdForcePlatformType",
|
||||||
|
"windows",
|
||||||
|
"+force_install_dir",
|
||||||
|
modsFolder,
|
||||||
|
"+login",
|
||||||
|
settings.inst!.steam_creds!.username,
|
||||||
|
settings.inst!.steam_creds!.password,
|
||||||
|
code.trim()
|
||||||
|
];
|
||||||
|
for (Mod M in settings.inst!.mods) {
|
||||||
|
manifest.add("+workshop_download_item");
|
||||||
|
manifest.add("440900");
|
||||||
|
manifest.add("${M.mod_id}");
|
||||||
|
}
|
||||||
|
|
||||||
|
await settings.createModFolderIfNotExists();
|
||||||
|
|
||||||
|
manifest.add("+quit");
|
||||||
|
|
||||||
|
//print(
|
||||||
|
// "Running command: ${settings.getSteamCmd()} ${manifest.join(" ")}");
|
||||||
|
|
||||||
|
result = await Process.run(settings.getSteamCmd(), manifest);
|
||||||
|
|
||||||
|
print(result.stdout);
|
||||||
|
}
|
||||||
|
|
||||||
Future<List<Mod>> doScanMods(String modsFolder) async {
|
Future<List<Mod>> doScanMods(String modsFolder) async {
|
||||||
Settings settings = Settings();
|
Settings settings = Settings();
|
||||||
|
|
||||||
|
@ -142,15 +179,14 @@ class GameServerPageState extends State<GameServerPage> {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text("Check Mods"),
|
title: Text("Download Mods"),
|
||||||
subtitle: Text("Checks the local mod copies against Steam"),
|
subtitle: Text("Downloads the mods"),
|
||||||
leading: Icon(Icons.download_sharp),
|
leading: Icon(Icons.download_sharp),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
setState(() {
|
setState(() {
|
||||||
downloading = true;
|
downloading = true;
|
||||||
});
|
});
|
||||||
|
await doDownloadMods(settings.getModPath());
|
||||||
// TODO: Insert the copy function from the configured mod location
|
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
downloading = false;
|
downloading = false;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hive_flutter/adapters.dart';
|
import 'package:hive_flutter/adapters.dart';
|
||||||
import 'package:servermanager/autorestart.dart';
|
import 'package:servermanager/autorestart.dart';
|
||||||
|
import 'package:servermanager/credentials.dart';
|
||||||
import 'package:servermanager/game.dart';
|
import 'package:servermanager/game.dart';
|
||||||
import 'package:servermanager/home.dart';
|
import 'package:servermanager/home.dart';
|
||||||
import 'package:servermanager/mod.dart';
|
import 'package:servermanager/mod.dart';
|
||||||
|
@ -8,9 +9,11 @@ import 'package:servermanager/proton.dart';
|
||||||
import 'package:servermanager/serversettings.dart';
|
import 'package:servermanager/serversettings.dart';
|
||||||
import 'package:servermanager/settings.dart';
|
import 'package:servermanager/settings.dart';
|
||||||
import 'package:servermanager/settingsEntry.dart';
|
import 'package:servermanager/settingsEntry.dart';
|
||||||
|
import 'package:servermanager/steamcmd.dart';
|
||||||
|
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
await Hive.initFlutter();
|
await Hive.initFlutter();
|
||||||
|
Hive.registerAdapter(CredentialsAdapter());
|
||||||
Hive.registerAdapter(ModAdapter());
|
Hive.registerAdapter(ModAdapter());
|
||||||
Hive.registerAdapter(SettingsEntryAdapter());
|
Hive.registerAdapter(SettingsEntryAdapter());
|
||||||
Hive.registerAdapter(AutomaticRestartInfoAdapter());
|
Hive.registerAdapter(AutomaticRestartInfoAdapter());
|
||||||
|
@ -33,15 +36,15 @@ class MyApp extends StatelessWidget {
|
||||||
routes: {
|
routes: {
|
||||||
"/home": (context) => HomePage(settings: appSettings),
|
"/home": (context) => HomePage(settings: appSettings),
|
||||||
"/proton": (context) => Proton(settings: appSettings),
|
"/proton": (context) => Proton(settings: appSettings),
|
||||||
//"/steamcmd": (context) => SteamCMD(
|
"/steamcmd": (context) => SteamCMD(
|
||||||
// settings: appSettings,
|
settings: appSettings,
|
||||||
// ),
|
),
|
||||||
"/server": (context) => GameServerPage(settings: appSettings),
|
"/server": (context) => GameServerPage(settings: appSettings),
|
||||||
"/server/autorestart": (context) => AutoRestartPage(),
|
"/server/autorestart": (context) => AutoRestartPage(),
|
||||||
"/server/ports": (context) => ServerSettingsPage(),
|
"/server/ports": (context) => ServerSettingsPage(),
|
||||||
"/server/mods": (context) => ModManager(settings: appSettings),
|
"/server/mods": (context) => ModManager(settings: appSettings),
|
||||||
"/server/mods/edit": (context) => ModPage(),
|
"/server/mods/edit": (context) => ModPage(),
|
||||||
//"/steamcmd/creds": (context) => CredentialsPrompt()
|
"/steamcmd/creds": (context) => CredentialsPrompt()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:servermanager/autorestart.dart';
|
import 'package:servermanager/autorestart.dart';
|
||||||
|
import 'package:servermanager/credentials.dart';
|
||||||
import 'package:servermanager/mod.dart';
|
import 'package:servermanager/mod.dart';
|
||||||
import 'package:servermanager/serversettings.dart';
|
import 'package:servermanager/serversettings.dart';
|
||||||
|
|
||||||
|
@ -10,6 +11,9 @@ class SettingsEntry {
|
||||||
@HiveField(0, defaultValue: [])
|
@HiveField(0, defaultValue: [])
|
||||||
List<Mod> mods = [];
|
List<Mod> mods = [];
|
||||||
|
|
||||||
|
@HiveField(3)
|
||||||
|
Credentials? steam_creds;
|
||||||
|
|
||||||
@HiveField(4, defaultValue: AutomaticRestartInfo())
|
@HiveField(4, defaultValue: AutomaticRestartInfo())
|
||||||
AutomaticRestartInfo timer = AutomaticRestartInfo();
|
AutomaticRestartInfo timer = AutomaticRestartInfo();
|
||||||
|
|
||||||
|
@ -24,7 +28,4 @@ class SettingsEntry {
|
||||||
RconPort: 7779,
|
RconPort: 7779,
|
||||||
GamePort: 7780,
|
GamePort: 7780,
|
||||||
QueryPort: 7782);
|
QueryPort: 7782);
|
||||||
|
|
||||||
@HiveField(6, defaultValue: "")
|
|
||||||
String conanExilesInstallLocation = "";
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,9 +46,7 @@ class StateMachine {
|
||||||
// Server startup in progress
|
// Server startup in progress
|
||||||
Settings settings = Settings();
|
Settings settings = Settings();
|
||||||
await settings.RunUpdate(valid: false);
|
await settings.RunUpdate(valid: false);
|
||||||
|
await doDownloadMods(settings.getModPath());
|
||||||
// TODO: Insert mod copy from mod location function
|
|
||||||
|
|
||||||
settings.inst!.mods = await doScanMods(settings.getModPath());
|
settings.inst!.mods = await doScanMods(settings.getModPath());
|
||||||
|
|
||||||
await settings.writeOutModListFile();
|
await settings.writeOutModListFile();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue