CH-J SM MobileSSH کے ذریعے سرور کا انتظام
مینو
شائع شدہ سورس

CH-J SM Mobile

ایپلیکیشن کی کسی مخصوص ریلیز کی ڈائریکٹریز اور فائلیں دیکھیں۔

سورس ZIP ڈاؤن لوڈ کریں
CH-J / SM Mobile 175 فائلیں
sm-mobile-20261016T185235Z-8e93ecc1b59a شامل کیا گیا: · بلڈ کیا گیا:
inspect_test.dart شامل کیا گیا: تاریخ درج نہیں 4.1 KB · 125 لائنیں
کوڈ فائل ڈاؤن لوڈ کریں
1import 'dart:convert';
2import 'dart:io';
3import 'dart:typed_data';
4import 'package:archive/archive.dart';
5import 'package:flutter_test/flutter_test.dart';
6import 'package:sm_mobile/services/editor/inspect.dart';
8const certificate = '''
9-----BEGIN CERTIFICATE-----
10MIIBoDCCAUegAwIBAgIUCsiMZ6pteLpL9u3ZNNGzcZRCYAUwCgYIKoZIzj0EAwIw
11JjEQMA4GA1UEAwwHc20udGVzdDESMBAGA1UECgwJQ0gtSiBUZXN0MB4XDTI2MTAx
12NjE4NTAxN1oXDTM2MTAxMzE4NTAxN1owJjEQMA4GA1UEAwwHc20udGVzdDESMBAG
13A1UECgwJQ0gtSiBUZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE96mUBHiX
14k7KFksidjIQFJtUBr7HcqXByj4zNwIOo47YBmhqN82FrKlbO36xEHXQCAioa7h1c
15ug3z3gGbz/urwqNTMFEwHQYDVR0OBBYEFHYRtuJAiNKJdsI/2t9y3n0tFC5ZMB8G
16A1UdIwQYMBaAFHYRtuJAiNKJdsI/2t9y3n0tFC5ZMA8GA1UdEwEB/wQFMAMBAf8w
17CgYIKoZIzj0EAwIDRwAwRAIgKu6R8/+wr47TXoybyKVJr4cFsN0XrS0EK0ck9nRZ
18+RMCIAbzv9d1fkFBne3y8pyB1o11qR3dje9chc5S+0szDmuF
19-----END CERTIFICATE-----
20''';
22void main() {
23 test('ZIP, TAR.GZ and GZIP are listed without extracting', () {
24 final a = Archive()
25 ..addFile(ArchiveFile.bytes('etc/app.conf', utf8.encode('x=1\n')))
26 ..addFile(ArchiveFile.bytes('README', utf8.encode('hello')));
27 final zip = Uint8List.fromList(ZipEncoder().encodeBytes(a));
28 final listing = listArchive('a.zip', zip);
29 expect(listing.format, 'ZIP');
30 expect(listing.entries.map((e) => e.name), ['etc/app.conf', 'README']);
31 expect(listing.entries.first.size, 4);
32 final tgz = Uint8List.fromList(gzip.encode(TarEncoder().encodeBytes(a)));
33 final t = listArchive('a.tar.gz', tgz);
34 expect(t.format, 'TAR.GZ');
35 expect(t.entries.map((e) => e.name), contains('README'));
36 final gz = listArchive(
37 'log.txt.gz',
38 Uint8List.fromList(gzip.encode(utf8.encode('abc'))),
39 );
40 expect(
41 (gz.format, gz.entries.single.name, gz.entries.single.size),
42 ('GZIP', 'log.txt', 3),
43 );
44 expect(
45 () => listArchive(
46 'x.7z',
47 Uint8List.fromList([0x37, 0x7a, 0xbc, 0xaf, 0x27, 0x1c]),
48 ),
49 throwsA(isA<ArchiveUnsupported>()),
50 );
51 });
53 test('certificate details; private keys are only reported', () async {
54 final items = await inspectCrypto(
55 Uint8List.fromList(
56 utf8.encode(
57 '$certificate\n-----BEGIN PRIVATE KEY-----\nAAAA\n-----END PRIVATE KEY-----\n',
58 ),
59 ),
60 );
61 final cert = items.firstWhere((i) => i.type == 'X.509 certificate');
62 expect(cert.fields['subject'], 'CN=sm.test, O=CH-J Test');
63 expect(cert.fields['publicKey'], 'EC');
64 expect(
65 cert.fields['sha256'],
66 'FD:9F:7B:E3:2A:9A:F1:CC:E9:B7:92:18:36:5A:50:1A:53:59:3F:55:89:2F:63:10:F9:76:5E:DC:8C:A4:2F:30',
67 );
68 expect(cert.fields['expired'], 'no');
69 final key = items.firstWhere((i) => i.secret);
70 expect(key.type, 'PRIVATE KEY');
71 expect(key.fields, isEmpty);
72 });
74 test('OpenSSH public key fingerprint matches ssh-keygen', () async {
75 final dir = await Directory.systemTemp.createTemp('sm-key-');
76 try {
77 await Process.run('ssh-keygen', [
78 '-q',
79 '-t',
80 'ed25519',
81 '-N',
82 '',
83 '-C',
84 'me@test',
85 '-f',
86 '${dir.path}/k',
87 ]);
88 final pub = File('${dir.path}/k.pub').readAsBytesSync();
89 final expected = (await Process.run('ssh-keygen', [
90 '-lf',
91 '${dir.path}/k.pub',
92 ])).stdout.toString().split(' ')[1];
93 final item = (await inspectCrypto(pub)).single;
94 expect(item.fields['sha256'], expected);
95 expect(item.fields['comment'], 'me@test');
96 } finally {
97 await dir.delete(recursive: true);
98 }
99 });
101 test('notebook cells with text output', () {
102 final cells = parseNotebook(
103 jsonEncode({
104 'cells': [
105 {
106 'cell_type': 'markdown',
107 'source': ['# Title'],
108 },
109 {
110 'cell_type': 'code',
111 'source': 'print(1)',
112 'outputs': [
113 {
114 'output_type': 'stream',
115 'text': ['1\n'],
116 },
117 ],
118 },
119 ],
120 }),
121 );
122 expect(cells.map((c) => c.type), ['markdown', 'code']);
123 expect(cells[1].outputs.single, '1\n');
124 });
SHA-256ab4a44a2641e8b998a97f8e24caa4a57a15441e0249c5ce8f62a88130f9cdd18

CH-J Proprietary Software License 1.14 · سورس CH-J Proprietary Software License 1.14 کے تحت فراہم کیا جاتا ہے۔ اس کی دستیابی لائسنس کی شرائط نہیں بدلتی اور نہ ہی اضافی حقوق دیتی ہے۔

آرکائیو کا SHA-25646e427a43e87af091004f36145590bda8fe90086dfb0f631afeb5029fb0b5655
فائلیں