рдкрд░рд┐рдЪрдп
рдореИрдВ рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдХреЛрдб рдХрдВрдкрдиреА рдХреЗ рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рднрд╛рдЧ рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рд╕реНрдЯреЗрд╢рди рдХреЗ рдХреЙрдиреНрдЯрд┐рдиреЗрдВрдЯ-рдПрдкреА рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╣реА IOS рдФрд░ Android рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛ рдЪреБрдХрд╛ рдерд╛ред рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд╕реЗрд▓рдлрд╝рд┐рд╢ рдУрдПрд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдпрд╛ рдЖрдИрдУрдПрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдУрдкрди рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рд▓реЗрдЦрди рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдерд╛ред
рд╕реЗрд▓рдлрд╝рд┐рд╢ рдУрдПрд╕ рдореЗрдВ рд╡реАрдкреАрдПрди рдПрдкреАрдЖрдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛
рд╕реЗрд▓рдлрд╝рд┐рд╢ рдУрдПрд╕ рдореЗрдВ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдХрдиреЗрдХреНрдЯрдореИрди рд╕реЗрд╡рд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рддреН:
- рд╡рд╛рдИ-рдлрд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╕реЗрд▓реБрд▓рд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдХреИрди рдХрд░реЗрдВ рдФрд░ рдЙрдирд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ;
- рд╕рд╛рдЭрд╛рдХрд░рдг рдХрдиреЗрдХреНрд╢рди (рд╡рд╛рдИ-рдлрд╛рдИ рд╣реЙрдЯрд╕реНрдкреЙрдЯ);
- рдЙрдбрд╝рд╛рди рдореЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж, рдЖрдЙрдЯрдкреБрдЯ рдХрдиреЗрдХреНрд╢рди;
- рд╡реАрдкреАрдПрди рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдмрдВрдзрдиред
рдореИрдВ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдХреЛрдирдореИрди рдореЗрдВ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡реАрдкреАрдПрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП QML рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдВрдЬреАрд░ред рд╡реАрдкреАрдПрди рдХрдиреЗрдХреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 1 рд╕реЗрд▓рдлрд╝рд┐рд╢ рдУрдПрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдиреВрд╣рдорд╛рд░реЗ рд╡реАрдкреАрдПрди рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдпреВрдЖрдИ рдПрдХ рдЖрд░рдкреАрдПрдо рдкреИрдХреЗрдЬ рд╣реИ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рд╡реАрдкреАрдПрди рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдПрдХреАрдХреГрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдпреВрдЖрдИ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╢рд╛рдпрдж рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓реА рдХрд╣рд╛рдиреА рд╕реА / рд╕реА ++ рдореЗрдВ рдХреЙрдирдореИрди рдкреНрд▓рдЧрдЗрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧреАред
рдЕрдВрдЬреАрд░ред рд╕реЗрд▓рдлрд┐рд╢ рджреНрд╡рд╛рд░рд╛ 2 рдорд╣рд╛рджреНрд╡реАрдк-рдПрдкреА рдЬреАрдпреВрдЖрдИрд╕реЗрд▓рдлрд╝рд┐рд╢ рдУрдПрд╕ рдХреЗ рд╡реАрдкреАрдПрди-рдПрдкреА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рдЕрдкрдиреЗ рд╡реАрдкреАрдПрди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдПрдВрдЧреЗ:
- рдХреЙрдирдореИрди рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рд╕реЗрд▓рдлрд╝рд┐рд╢ рдУрдПрд╕ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
- рдХреЙрдирдореИрди-рд╡реАрдкреАрдПрди, рдХреЙрдирдореИрди рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдПрдХ рдбреЗрдорди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд╡реАрдкреАрдПрди рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЯреНрдпреВрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рдбреА-рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреАрдмреАрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ (рдЖрдИрдкреА рдПрдбреНрд░реЗрд╕, рд░реВрдЯреНрд╕, рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░) рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдорд╣рд╛рджреНрд╡реАрдк рд╣реИред
- рдорд╣рд╛рджреНрд╡реАрдк-proto-plugin.so рд╡реАрдкреАрдПрди рдкреНрд▓рдЧрдЗрди рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ рдШреЛрд╖рдгрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдиреЗрдЯ.рдХреЙрдиреНрдорди.рд╡реАрдкреАрдПрди.рдХреЙрдиреНрдиреЗрдиреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдкреГрд╖реНрдарднреВрдорд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ / рдпреВрдПрд╕рдЖрд░ / рдПрд╕рдмреАрдПрди / рдорд╣рд╛рджреНрд╡реАрдк) рд╕реАрдбреА (рдХреЙрдиреНрдЯрд┐рдиреЗрдВрдЯ рдПрдХреНрд╕реЗрд╕ рд╕рд░реНрд╡рд░) рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ рдЗрд╕реЗ рдХреЙрдирдореИрди-рд╡реАрдкреАрдПрдирдбреА рд╕реЗ рдЧреБрдЬрд░рддреА рд╣реИрдВред
- рдХреЙрдирдореИрди рдЯрд╛рд╕реНрдХ рдПрдХ рд░рдирд┐рдВрдЧ рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ, рд░реЛрдХрдиреЗ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред
- DBus-api - connman-vpnd рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН net.connman.vpn рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде net.connman.vpn.Manager, net.connman.vpn.Connectionред
рдЕрдВрдЬреАрд░ред 3 "рдХреЙрдиреНрдЯрд┐рдиреЗрдВрдЯ-рдПрдкреА" рд╕реЗрд▓рдлрд╝рд┐рд╢ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреА рдЖрдкрд╕ рдореЗрдВ рдмрд╛рддрдЪреАрддрд╡реАрдкреАрдПрди рдкреНрд▓рдЧрдЗрди
рдХреЙрдирдореИрди рд╡рд┐рддрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╕рдордп / usr / lib / connman / plugins-vpn рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪрд▓рд╛рдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрде /etc/connman/vpn-plugin/continent.conf рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рд╣рдорд╛рд░реЗ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╣рд╛рджреНрд╡реАрдк .confред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА:
[VPN Binary] User = nemo Group = vpn SupplementaryGroups = inet,net_admin
рдХреЙрдирдореИрди рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдорд╣рд╛рджреНрд╡реАрдк-proto-plugin.so рдореИрдХреНрд░реЛ CONNMAN_PLUGIN_DEFINE (рдирд╛рдо, рд╡рд┐рд╡рд░рдг, рд╕рдВрд╕реНрдХрд░рдг, init, рдирд┐рдХрд╛рд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдХреНрд░реЛ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
CONNMAN_PLUGIN_DEFINE(continent, "continent VPN plugin", CONNMAN_VERSION, CONNMAN_PLUGIN_PRIORITY_DEFAULT, continent_init, continent_exit);
рдирд╛рдо (рдорд╣рд╛рджреНрд╡реАрдк) рддрд░реНрдХ рдХреЛ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЙрдиреНрдЯрд┐рдиреЗрдВрдЯ_рдЗрдирд┐рдЯ, рдХреЙрдиреНрдЯреЗрдВрдЯ_рдПрдХреНрд╕рд┐рдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рддрдм рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВ рдЬрдм рдкреНрд▓рдЧ рдХреЛ рд▓реЛрдб рдФрд░ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╕рд┐рд╕реНрдЯрдордорд╛рд░реНрдЯ рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ рдХреЙрдирдореИрди рдХреЛ рдЖрд░рдкреАрдПрдо рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╣рд╛рджреНрд╡реАрдк_init рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╛рд╕ vpn_register рдФрд░ connman_dbus_get_connection рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реИред
vpn_register(name, driver, binary_path)
рдирд╛рдо - рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдирд╛рдо рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ "рдорд╣рд╛рджреНрд╡реАрдк" рд╣реИ;
рдбреНрд░рд╛рдЗрд╡рд░ - рд╕рдВрд░рдЪрдирд╛рддреНрдордХ vpn_driver рд╕рдВрд░рдЪрдирд╛ рдЬрд┐рд╕рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм DBus рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд▓рдЧрдЗрди рддрдХ рдкрд╣реБрдВрдЪ;
рдмрд╛рдЗрдирд░реА_рдкрде - рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ "/ usr / sbin / рдорд╣рд╛рджреНрд╡реАрдк" рд╣реИред
Conman_dbus_get_connection рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрд┐рдд DBus рдХрдиреЗрдХреНрд╢рди, DBusConnection * рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХреЙрдирдореИрди рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЕрдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдбреАрдмрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдЯреЗрдВрдЯ_рдПрдХреНрд╕рд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдХ рд╡реАрдкреАрдПрди рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рддрдм рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм DBus net.connman.vpn.Manager.Create рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП /var/lib/connman/provider_$endersHasasket_ministrVPN.Domain} рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдкреНрд░рджрд╛рддрд╛ рдХреЛ net.connman.vpn.Manager.Remove рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм net.connman.vpn.Connection.Connect рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрдирд╛рдП рдЧрдП рд╕реНрдЯреНрд░рдХреНрдЪрд░ vpn_provider * рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рд╕рдВрд░рдЪрдирд╛ vpn_driver рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдХрдиреЗрдХреНрдЯ - рдХреЙрд▓рдмреИрдХ, рдЬрд┐рд╕реЗ рдиреЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ редconnman.vpn.Connection.Connect DBus рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ DBus рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВ:
static int continent_connect( struct vpn_provider *provider, struct connman_task *task, const char *if_name, vpn_provider_connect_cb_t cb, const char *dbus_sender, void *user_data)
рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рддрд░реНрдХ рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░рд▓ рдХреЙрдирдореИрди_рдЯрд╕реНрдХ * рдЯрд╛рд╕реНрдХ рд╣реИ, рдпрд╣ рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓ рдХреЛ рд░рди рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рд╣реЛрд╕реНрдЯ рдФрд░ рдкреЛрд░реНрдЯ:
connman_task_add_argument(task, "--host", value); connman_task_add_argument(task, "--port", value);
рд╣рдо рдкреНрд░рджрд╛рддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдерд╛, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП vpn_provider_get_string рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
char * value = vpn_provider_get_string(provider , тАЬHostтАЭ)
рдЬрд╣рд╛рдВ рдкреНрд░рджрд╛рддрд╛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ vpn_provider рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
connman_task_add_argument(task, "--dev-name", if_name).
рдКрдкрд░ рджреА рдЧрдИ рд░реЗрдЦрд╛ рдЙрд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдирд╛рдо рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ CONMan-vpnd рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реАрдкреАрдПрди рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдард╛рдП рдЧрдП TUN рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ IP рдкреИрдХреЗрдЯ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╡рд░рдгрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред
рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯрд┐рдкреНрдкрдгреА: рдкреНрд▓рдЧрдЗрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ TUN рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
connman_task_add_argument(task, "--dbus-busname", dbus_bus_get_unique_name(connection)); connman_task_add_argument(task, "--dbus-interface", CONNMAN_TASK_INTERFACE); connman_task_add_argument(task, "--dbus-path", connman_task_get_path(task));
рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╡реАрдкреАрдПрди рдкреНрд▓рдЧрдЗрди рдХреЗ рдмреАрдЪ рдлреАрдбрдмреИрдХ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЙрдирдореИрдирдЯреИрд╕реНрдХ рдбреАрдмрд╕ рдПрдбреНрд░реЗрд╕ рдФрд░ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрдВрдХреНрд╢рди рдореЗрдВ conman_dbus_get_connection рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
err = connman_task_run(task, continent_died, data, &data->stdin_fd, NULL, NULL);
Continent_died - рдХреЙрд▓рдмреИрдХ рдЬрд┐рд╕реЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдкреНрд░реЛрд╕реЗрд╕ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдореЗрдореЛрд░реА рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред
рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ - рдХреЙрд▓рдмреИрдХ, рдЬрд┐рд╕реЗ net.connman.Task.notify рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ DBus рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рд░рдирд┐рдВрдЧ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ DBus рд╕рдВрджреЗрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдиреЗрдЯрд╡рд░реНрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкреНрд░рд╕рд╛рд░рдг рд╣реИ: рдЯреАрдпреВрдПрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкрддрд╛, рд╡рд░реНрдЪреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ рдЖрджрд┐ред рдиреЗрдЯрд╡рд░реНрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдбрд┐рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ DBusMessage рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЙрдирдореИрди рдЯрд╛рд╕реНрдХ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░ Dbus рдкреИрд░рд╛рдореАрдЯрд░ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рд╕реВрдЪрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ TUN рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
struct connman_ipaddress * ipaddress = connman_ipaddress_alloc(AF_INET); connman_ipaddress_set_ipv4(ipaddress, address, netmask, remote_server_ip); connman_ipaddress_set_peer(ipaddress, peer); vpn_provider_set_ipaddress(provider, ipaddress); vpn_provider_set_nameservers(provider, тАЬ8.8.8.8тАЭ); return VPN_STATE_CONNECT;
рд╣рдо рдордзреНрдпрд╡рд░реНрддреА рдорд╛рди рднреА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдХрд░ рдШрдЯрдирд╛ рдХреЗ UI рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ UI рдиреЗрдЯ рд╕реЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВред (рдкреНрд░рджрд╛рддрд╛, рдХреБрдВрдЬреА, рдореВрд▓реНрдп)ред
рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ - рдХреЙрд▓рдмреИрдХ рдЬрд┐рд╕реЗ рдиреЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ редconnman.vpn.Connection.Disconnect рдХреЛ DBus рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
рд░реЛрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ SIGTERM рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрдХрд░ рд╣реЛрддреА рд╣реИ, рдпрджрд┐ 3 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдХреЛрдИ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ SIGKILL рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡реАрдкреАрдПрди рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ
рдХреЙрдиреНрдЯрд┐рдиреЗрдВрдЯ-рдПрдкреА рд╡реАрдкреАрдПрди рдкреНрд▓рдЧ-рдЗрди рдФрд░ рдЗрд╕рдХреЗ рдШрдЯрдХреЛрдВ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗрд▓рдлрд╝рд┐рд╢ рдмрд┐рд▓реНрдб рдЗрдВрдЬрди рдУрдПрд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдХреНрд╕) рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕реЗрд▓рдлрд╝рд┐рд╢ рдПрд╕рдбреАрдХреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдХреЙрдирдореИрди-рдбреЗрд╡реЗрд▓, рдбрдмрд╕ -1, рдЧреНрд▓рд┐рдмреНрд╕ -2.0, рдЬрд┐рд╕реЗ рд╣рдо ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
ssh -p 2222 -i ~/SailfishOS/vmshare/ssh/private_keys/engine/mersdk mersdk@localhost
рд╣рдо рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдПрд╕рдмреА 2 рдЙрдкрдпреЛрдЧрд┐рддрд╛ (рд╕реНрдХреНрд░реИрдЪрдмреЙрдХреНрд╕ 2) - рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо i486 рдФрд░ armv7hl рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
sb2 -t SailfishOS-3.0.1.11-i486 -m sdk-install -R zypper -n in cmake patchelf chrpath connman-devel systemd-compat-libs systemd-devel
sb2 -t SailfishOS-3.0.1.11-armv7hl -m sdk-install -R zypper -n in cmake patchelf chrpath connman-devel systemd-compat-libs systemd-devel
Sd_journal_print рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдордб-рдХреЙрдореНрдкрд┐рдЯ-рд▓рд┐рдм рдФрд░ рд╕рд┐рд╕реНрдЯрдордб-рдбреЗрд╡реЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо Cmake рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
рд╣рдо sb2 sdk-build рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдкреАрдПрди рдкреНрд▓рдЧрдЗрди рдФрд░ рдЙрд╕рдХреЗ рдШрдЯрдХреЛрдВ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
sb2 -t SailfishOS-3.0.1.11-armv7hl -m sdk-build cmake . && make sb2 -t SailfishOS-3.0.1.11-i486 -m sdk-build cmake . && make
рдЕрдЧрд▓рд╛, рд╣рдордиреЗ рдЕрдкрдиреЗ рдпреВрдЖрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд░рдЦрд╛, рдЬрд┐рд╕рдореЗрдВ рдХреЙрдиреНрдЯрд┐рдиреЗрдВрдЯ-рдПрдкреА рд╕реЗрд▓рдлрд╝рд┐рд╢ рд╡рд┐рддрд░рдг рдЖрд░рдкреАрдПрдо рдкреИрдХреЗрдЬ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдпреБрдХреНрддрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╛рдЧ рдХреЛ рдереЛрдбрд╝рд╛ рдПрдбрдЬрд╕реНрдЯ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
%files %defattr(-,root,root,-) %{_sbindir}/continent %{_libdir}/connman/plugins-vpn/continent-proto-plugin.so
рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдпреВрдЖрдИ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╕реЗрд▓рдлрд┐рд╢ рдПрд╕рдбреАрдХреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдирд┐рд░рдВрддрд░ рд▓реЙрдЧ рдЖрдЙрдЯрдкреБрдЯ рдореЛрдб рдореЗрдВ -f рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЬреАрдбреАрдмрд╕ рдФрд░ рдЬрд░реНрдирд▓рдХреНрдЯ рдиреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, gdbus рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛:
gdbus call --system --dest=net.connman.vpn --object-path / --method net.connman.vpn.Manager.Create "{ 'Type': <'continent'>, тАж }"
рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг INOI R7 (рдлреЛрди), INOI T8 (рдЯреИрдмрд▓реЗрдЯ) рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдереЗ
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
- рд╕реЗрд▓рдлрд╝рд┐рд╢ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЙрдирдореИрди рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
- рдХрдВрдХрд╛рд▓ - рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛
- sailfishos.org/wiki