mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-27 19:08:27 +01:00
merge common implementations and server implementations
This commit is contained in:
616
Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Netdfs.cs
Normal file
616
Emby.Server.Implementations/IO/SharpCifs/Dcerpc/Msrpc/Netdfs.cs
Normal file
@@ -0,0 +1,616 @@
|
||||
// This code is derived from jcifs smb client library <jcifs at samba dot org>
|
||||
// Ported by J. Arturo <webmaster at komodosoft dot net>
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
using SharpCifs.Dcerpc.Ndr;
|
||||
|
||||
namespace SharpCifs.Dcerpc.Msrpc
|
||||
{
|
||||
public class Netdfs
|
||||
{
|
||||
public static string GetSyntax()
|
||||
{
|
||||
return "4fc742e0-4a10-11cf-8273-00aa004ae673:3.0";
|
||||
}
|
||||
|
||||
public const int DfsVolumeFlavorStandalone = unchecked(0x100);
|
||||
|
||||
public const int DfsVolumeFlavorAdBlob = unchecked(0x200);
|
||||
|
||||
public const int DfsStorageStateOffline = unchecked(0x0001);
|
||||
|
||||
public const int DfsStorageStateOnline = unchecked(0x0002);
|
||||
|
||||
public const int DfsStorageStateActive = unchecked(0x0004);
|
||||
|
||||
public class DfsInfo1 : NdrObject
|
||||
{
|
||||
public string EntryPath;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_referent(EntryPath, 1);
|
||||
if (EntryPath != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
dst.Enc_ndr_string(EntryPath);
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
int entryPathp = src.Dec_ndr_long();
|
||||
if (entryPathp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
EntryPath = src.Dec_ndr_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsEnumArray1 : NdrObject
|
||||
{
|
||||
public int Count;
|
||||
|
||||
public DfsInfo1[] S;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_long(Count);
|
||||
dst.Enc_ndr_referent(S, 1);
|
||||
if (S != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
int ss = Count;
|
||||
dst.Enc_ndr_long(ss);
|
||||
int si = dst.Index;
|
||||
dst.Advance(4 * ss);
|
||||
dst = dst.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
S[i].Encode(dst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
Count = src.Dec_ndr_long();
|
||||
int sp = src.Dec_ndr_long();
|
||||
if (sp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
int ss = src.Dec_ndr_long();
|
||||
int si = src.Index;
|
||||
src.Advance(4 * ss);
|
||||
if (S == null)
|
||||
{
|
||||
if (ss < 0 || ss > unchecked(0xFFFF))
|
||||
{
|
||||
throw new NdrException(NdrException.InvalidConformance);
|
||||
}
|
||||
S = new DfsInfo1[ss];
|
||||
}
|
||||
src = src.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
if (S[i] == null)
|
||||
{
|
||||
S[i] = new DfsInfo1();
|
||||
}
|
||||
S[i].Decode(src);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsStorageInfo : NdrObject
|
||||
{
|
||||
public int State;
|
||||
|
||||
public string ServerName;
|
||||
|
||||
public string ShareName;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_long(State);
|
||||
dst.Enc_ndr_referent(ServerName, 1);
|
||||
dst.Enc_ndr_referent(ShareName, 1);
|
||||
if (ServerName != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
dst.Enc_ndr_string(ServerName);
|
||||
}
|
||||
if (ShareName != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
dst.Enc_ndr_string(ShareName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
State = src.Dec_ndr_long();
|
||||
int serverNamep = src.Dec_ndr_long();
|
||||
int shareNamep = src.Dec_ndr_long();
|
||||
if (serverNamep != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
ServerName = src.Dec_ndr_string();
|
||||
}
|
||||
if (shareNamep != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
ShareName = src.Dec_ndr_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsInfo3 : NdrObject
|
||||
{
|
||||
public string Path;
|
||||
|
||||
public string Comment;
|
||||
|
||||
public int State;
|
||||
|
||||
public int NumStores;
|
||||
|
||||
public DfsStorageInfo[] Stores;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_referent(Path, 1);
|
||||
dst.Enc_ndr_referent(Comment, 1);
|
||||
dst.Enc_ndr_long(State);
|
||||
dst.Enc_ndr_long(NumStores);
|
||||
dst.Enc_ndr_referent(Stores, 1);
|
||||
if (Path != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
dst.Enc_ndr_string(Path);
|
||||
}
|
||||
if (Comment != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
dst.Enc_ndr_string(Comment);
|
||||
}
|
||||
if (Stores != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
int storess = NumStores;
|
||||
dst.Enc_ndr_long(storess);
|
||||
int storesi = dst.Index;
|
||||
dst.Advance(12 * storess);
|
||||
dst = dst.Derive(storesi);
|
||||
for (int i = 0; i < storess; i++)
|
||||
{
|
||||
Stores[i].Encode(dst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
int pathp = src.Dec_ndr_long();
|
||||
int commentp = src.Dec_ndr_long();
|
||||
State = src.Dec_ndr_long();
|
||||
NumStores = src.Dec_ndr_long();
|
||||
int storesp = src.Dec_ndr_long();
|
||||
if (pathp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
Path = src.Dec_ndr_string();
|
||||
}
|
||||
if (commentp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
Comment = src.Dec_ndr_string();
|
||||
}
|
||||
if (storesp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
int storess = src.Dec_ndr_long();
|
||||
int storesi = src.Index;
|
||||
src.Advance(12 * storess);
|
||||
if (Stores == null)
|
||||
{
|
||||
if (storess < 0 || storess > unchecked(0xFFFF))
|
||||
{
|
||||
throw new NdrException(NdrException.InvalidConformance);
|
||||
}
|
||||
Stores = new DfsStorageInfo[storess];
|
||||
}
|
||||
src = src.Derive(storesi);
|
||||
for (int i = 0; i < storess; i++)
|
||||
{
|
||||
if (Stores[i] == null)
|
||||
{
|
||||
Stores[i] = new DfsStorageInfo();
|
||||
}
|
||||
Stores[i].Decode(src);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsEnumArray3 : NdrObject
|
||||
{
|
||||
public int Count;
|
||||
|
||||
public DfsInfo3[] S;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_long(Count);
|
||||
dst.Enc_ndr_referent(S, 1);
|
||||
if (S != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
int ss = Count;
|
||||
dst.Enc_ndr_long(ss);
|
||||
int si = dst.Index;
|
||||
dst.Advance(20 * ss);
|
||||
dst = dst.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
S[i].Encode(dst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
Count = src.Dec_ndr_long();
|
||||
int sp = src.Dec_ndr_long();
|
||||
if (sp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
int ss = src.Dec_ndr_long();
|
||||
int si = src.Index;
|
||||
src.Advance(20 * ss);
|
||||
if (S == null)
|
||||
{
|
||||
if (ss < 0 || ss > unchecked(0xFFFF))
|
||||
{
|
||||
throw new NdrException(NdrException.InvalidConformance);
|
||||
}
|
||||
S = new DfsInfo3[ss];
|
||||
}
|
||||
src = src.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
if (S[i] == null)
|
||||
{
|
||||
S[i] = new DfsInfo3();
|
||||
}
|
||||
S[i].Decode(src);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsInfo200 : NdrObject
|
||||
{
|
||||
public string DfsName;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_referent(DfsName, 1);
|
||||
if (DfsName != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
dst.Enc_ndr_string(DfsName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
int dfsNamep = src.Dec_ndr_long();
|
||||
if (dfsNamep != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
DfsName = src.Dec_ndr_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsEnumArray200 : NdrObject
|
||||
{
|
||||
public int Count;
|
||||
|
||||
public DfsInfo200[] S;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_long(Count);
|
||||
dst.Enc_ndr_referent(S, 1);
|
||||
if (S != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
int ss = Count;
|
||||
dst.Enc_ndr_long(ss);
|
||||
int si = dst.Index;
|
||||
dst.Advance(4 * ss);
|
||||
dst = dst.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
S[i].Encode(dst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
Count = src.Dec_ndr_long();
|
||||
int sp = src.Dec_ndr_long();
|
||||
if (sp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
int ss = src.Dec_ndr_long();
|
||||
int si = src.Index;
|
||||
src.Advance(4 * ss);
|
||||
if (S == null)
|
||||
{
|
||||
if (ss < 0 || ss > unchecked(0xFFFF))
|
||||
{
|
||||
throw new NdrException(NdrException.InvalidConformance);
|
||||
}
|
||||
S = new DfsInfo200[ss];
|
||||
}
|
||||
src = src.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
if (S[i] == null)
|
||||
{
|
||||
S[i] = new DfsInfo200();
|
||||
}
|
||||
S[i].Decode(src);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsInfo300 : NdrObject
|
||||
{
|
||||
public int Flags;
|
||||
|
||||
public string DfsName;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_long(Flags);
|
||||
dst.Enc_ndr_referent(DfsName, 1);
|
||||
if (DfsName != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
dst.Enc_ndr_string(DfsName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
Flags = src.Dec_ndr_long();
|
||||
int dfsNamep = src.Dec_ndr_long();
|
||||
if (dfsNamep != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
DfsName = src.Dec_ndr_string();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsEnumArray300 : NdrObject
|
||||
{
|
||||
public int Count;
|
||||
|
||||
public DfsInfo300[] S;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_long(Count);
|
||||
dst.Enc_ndr_referent(S, 1);
|
||||
if (S != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
int ss = Count;
|
||||
dst.Enc_ndr_long(ss);
|
||||
int si = dst.Index;
|
||||
dst.Advance(8 * ss);
|
||||
dst = dst.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
S[i].Encode(dst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
Count = src.Dec_ndr_long();
|
||||
int sp = src.Dec_ndr_long();
|
||||
if (sp != 0)
|
||||
{
|
||||
src = src.Deferred;
|
||||
int ss = src.Dec_ndr_long();
|
||||
int si = src.Index;
|
||||
src.Advance(8 * ss);
|
||||
if (S == null)
|
||||
{
|
||||
if (ss < 0 || ss > unchecked(0xFFFF))
|
||||
{
|
||||
throw new NdrException(NdrException.InvalidConformance);
|
||||
}
|
||||
S = new DfsInfo300[ss];
|
||||
}
|
||||
src = src.Derive(si);
|
||||
for (int i = 0; i < ss; i++)
|
||||
{
|
||||
if (S[i] == null)
|
||||
{
|
||||
S[i] = new DfsInfo300();
|
||||
}
|
||||
S[i].Decode(src);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DfsEnumStruct : NdrObject
|
||||
{
|
||||
public int Level;
|
||||
|
||||
public NdrObject E;
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode(NdrBuffer dst)
|
||||
{
|
||||
dst.Align(4);
|
||||
dst.Enc_ndr_long(Level);
|
||||
int descr = Level;
|
||||
dst.Enc_ndr_long(descr);
|
||||
dst.Enc_ndr_referent(E, 1);
|
||||
if (E != null)
|
||||
{
|
||||
dst = dst.Deferred;
|
||||
E.Encode(dst);
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode(NdrBuffer src)
|
||||
{
|
||||
src.Align(4);
|
||||
Level = src.Dec_ndr_long();
|
||||
src.Dec_ndr_long();
|
||||
int ep = src.Dec_ndr_long();
|
||||
if (ep != 0)
|
||||
{
|
||||
if (E == null)
|
||||
{
|
||||
E = new DfsEnumArray1();
|
||||
}
|
||||
src = src.Deferred;
|
||||
E.Decode(src);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class NetrDfsEnumEx : DcerpcMessage
|
||||
{
|
||||
public override int GetOpnum()
|
||||
{
|
||||
return unchecked(0x15);
|
||||
}
|
||||
|
||||
public int Retval;
|
||||
|
||||
public string DfsName;
|
||||
|
||||
public int Level;
|
||||
|
||||
public int Prefmaxlen;
|
||||
|
||||
public DfsEnumStruct Info;
|
||||
|
||||
public NdrLong Totalentries;
|
||||
|
||||
public NetrDfsEnumEx(string dfsName, int level, int prefmaxlen, DfsEnumStruct
|
||||
info, NdrLong totalentries)
|
||||
{
|
||||
this.DfsName = dfsName;
|
||||
this.Level = level;
|
||||
this.Prefmaxlen = prefmaxlen;
|
||||
this.Info = info;
|
||||
this.Totalentries = totalentries;
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Encode_in(NdrBuffer dst)
|
||||
{
|
||||
dst.Enc_ndr_string(DfsName);
|
||||
dst.Enc_ndr_long(Level);
|
||||
dst.Enc_ndr_long(Prefmaxlen);
|
||||
dst.Enc_ndr_referent(Info, 1);
|
||||
if (Info != null)
|
||||
{
|
||||
Info.Encode(dst);
|
||||
}
|
||||
dst.Enc_ndr_referent(Totalentries, 1);
|
||||
if (Totalentries != null)
|
||||
{
|
||||
Totalentries.Encode(dst);
|
||||
}
|
||||
}
|
||||
|
||||
/// <exception cref="SharpCifs.Dcerpc.Ndr.NdrException"></exception>
|
||||
public override void Decode_out(NdrBuffer src)
|
||||
{
|
||||
int infop = src.Dec_ndr_long();
|
||||
if (infop != 0)
|
||||
{
|
||||
if (Info == null)
|
||||
{
|
||||
Info = new DfsEnumStruct();
|
||||
}
|
||||
Info.Decode(src);
|
||||
}
|
||||
int totalentriesp = src.Dec_ndr_long();
|
||||
if (totalentriesp != 0)
|
||||
{
|
||||
Totalentries.Decode(src);
|
||||
}
|
||||
Retval = src.Dec_ndr_long();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user